TomEE |CDI - развертывание FAT JAR несовместимо с жизненными циклами управляемых компонентов - PullRequest
0 голосов
/ 01 марта 2019

Я запускаю TomEE в развертывании типа FAT JAR, и недавно я заметил, что мой жизненный цикл @PreDestroy не запускается при прерывании (сигнал ^C).Я полагаю, что это может быть связано с тем, что когда FAR JAR взрывается в WAR, WAR будет запускаться в отдельной JVM.Я заметил, что если я настрою свой собственный хук отключения, он действительно сработает.

Application.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 справляется с этим с помощью своего Fat JAR с предварительно настроенным отключающим крюком .Код для этого можно увидеть здесь .

Я надеюсь, что разработчик TomEE может вмешаться в эту проблему.В настоящее время я вижу, что любой, кто использует Fat JAR, склонен к этой проблеме, если только он не кодировал свой собственный обработчик управляемых бинов.

...