点个关注吧~
·04-11 23:11AI 零代码应用生成平台 bug 反馈
类: Web 截图工具类
项目中销毁webDriver时,使用了@PreDestroy注解,
@PreDestroy是 Spring 管理 Bean 生命周期用的,直接写在静态工具类的非静态方法上是不会生效的,这会导致应用关闭时遗留僵尸 Chrome 进程。
所以需要修改实现方式。正确的实现方式是,在静态代码块中使用Java原生的JVM关闭钩子。代码在文末。
与AI的对话,可参考:
https://docs.google.com/document/d/1kcWj31vCGYcT98G2_0Fz_jKuLabO9HpNl0XA7BwP5zg/edit?usp=sharing
代码:
static {
webDriver = initChromeDriver(DEFAULT_WIDTH, DEFAULT_HEIGHT);
// 注册 JVM 关闭钩子
Runtime.getRuntime().addShutdownHook(new Thread(() -> {
log.info("JVM 正在关闭,准备清理 Chrome 进程...");
if (webDriver != null) {
try {
webDriver.quit(); // 这样才能真正在应用停止时杀死 Chrome 进程
log.info("Chrome 进程清理完毕");
} catch (Exception e) {
log.error("清理 Chrome 进程失败", e);
}
}
}));
}
https://docs.google.com/document/d/1kcWj31vCGYcT98G2_0Fz_jKuLabO9HpNl0XA7BwP5zg/edit?usp=sharing
4
2
分享
操作
评论
问答助学
相关内容
0个评论
全部评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
