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

Java TomEE | CDI-Fat JAR部署与托管bean生命周期不兼容,java,jakarta-ee,cdi,apache-tomee,fatjar,Java,Jakarta Ee,Cdi,Apache Tomee,Fatjar,我在胖罐子类型的部署中运行我的TomEE,最近我注意到我的@PreDestroy生命周期在被中断时没有被触发(^C信号)。我相信这可能是因为当胖罐子爆发成战争时,战争将在一个单独的JVM中运行。我已经注意到,如果我配置自己的关机挂钩,它确实会触发 Application.java @启动 @适用范围 公共类应用程序{ @施工后 私有void init(){ System.out.println(“==================================================

我在胖罐子类型的部署中运行我的TomEE,最近我注意到我的
@PreDestroy
生命周期在被中断时没有被触发(
^C
信号)。我相信这可能是因为当胖罐子爆发成战争时,战争将在一个单独的JVM中运行。我已经注意到,如果我配置自己的关机挂钩,它确实会触发

Application.java

@启动
@适用范围
公共类应用程序{
@施工后
私有void init(){
System.out.println(“======================================================================”);
Runtime.getRuntime()
.addShutdownHook(新线程(()->System.out.println(“ShutdownHook正在运行”));
}
@发情前期
私有void deinit(){
System.out.println(“=============================================================”);
}
}
但是,这并不是最终的解决方案,因为我还有未触及的生命周期。Spring Boot可以很好地处理这一问题,它的胖罐子具有预配置功能。可以看到它的代码

我希望一本书能在这个问题上引起大家的注意。目前,我发现任何使用FatJar的人都容易出现这个问题,除非他们编写了自己的托管bean关闭钩子