From 3c428f6a6de71ca62ee0f263ad9ec05ede807cad Mon Sep 17 00:00:00 2001 From: yukaidi Date: Fri, 29 May 2026 09:01:08 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20ShutdownHook=20=E6=B3=A8=E5=86=8C?= =?UTF-8?q?=E9=A1=BA=E5=BA=8F=E8=B0=83=E6=95=B4=EF=BC=8C=E7=A1=AE=E4=BF=9D?= =?UTF-8?q?=20Vert.x=20=E5=85=88=E4=BA=8E=20JDBCPoolInit=20=E5=85=B3?= =?UTF-8?q?=E9=97=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit JVM ShutdownHook 按注册逆序执行。将 AppMain 的 hook 移到 Deploy.start() 之前注册, 使执行顺序变为:Deploy hook(关闭 Vert.x)-> AppMain hook(关闭 JDBCPoolInit/JsParserExecutor)。 --- web-service/src/main/java/cn/qaiu/lz/AppMain.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/web-service/src/main/java/cn/qaiu/lz/AppMain.java b/web-service/src/main/java/cn/qaiu/lz/AppMain.java index bebaf76..933a0f5 100644 --- a/web-service/src/main/java/cn/qaiu/lz/AppMain.java +++ b/web-service/src/main/java/cn/qaiu/lz/AppMain.java @@ -36,9 +36,8 @@ import static cn.qaiu.vx.core.util.ConfigConstant.LOCAL; public class AppMain { public static void main(String[] args) { - // start - Deploy.instance().start(args, AppMain::exec); - // 注册补充 ShutdownHook,关闭 core 模块无法直接依赖的资源 + // 先注册 ShutdownHook(JVM 逆序执行,先注册的后执行) + // 确保关闭顺序:Vert.x -> JDBCPoolInit -> JsParserExecutor Runtime.getRuntime().addShutdownHook(new Thread(() -> { try { JDBCPoolInit.instance().close(); @@ -51,6 +50,8 @@ public class AppMain { // ignore } })); + // start + Deploy.instance().start(args, AppMain::exec); } /**