代码之家  ›  专栏  ›  技术社区  ›  James

TomEE | CDI-Fat JAR部署与托管bean生命周期不兼容

  •  0
  • James  · 技术社区  · 7 年前

    我在一个胖罐子类型的部署中运行我的书,最近我注意到 @PreDestroy 中断时未触发生命周期( ^C 信号)。我相信这可能是因为当Fat JAR爆炸成WAR时,WAR将在单独的JVM中运行。我注意到,如果我配置自己的关闭钩子,它确实会触发。

    应用程序.java

    @Startup
    @ApplicationScoped
    public class Application {
        @PostConstruct
        private void init() {
            System.out.println("=============INITIALIZING=============");
            Runtime.getRuntime()
                    .addShutdownHook(new Thread(() -> System.out.println("Shutdown Hook is running!")));
        }
    
        @PreDestroy
        private void deinit() {
            System.out.println("=============DESTROYING===============");
        }
    }
    

    但是,这并不是最终的解决方案,因为我仍然有未受影响的生命周期。Spring Boot通过其预先配置的胖罐子很好地处理了这个问题 shutdown hook . 可以看到它的代码 here .

    我希望能有一本关于这个问题的书。目前,我看到任何使用Fat JAR的人都容易出现这个问题,除非他们已经编写了自己的托管bean关闭挂钩。

    0 回复  |  直到 7 年前
    推荐文章