PayaraMicro не вызывает @PreDestroy для EJB или ApplicationScoped - PullRequest
1 голос
/ 24 февраля 2020

Я перемещаю WAR-приложение из PayaraServer в Payara Micro, чтобы уменьшить использование оперативной памяти.

Я просто понимаю, что @PreDestroy на EJB не вызывается при остановке экземпляра с помощью CTRL + C.

Существует ли правильный способ правильно закрыть экземпляр payaramicro, так как я хотел бы выполнить некоторые операции.

Спасибо за ваши ответы!

Или какие службы на сервере Payara отключить для использовать столько же оперативной памяти, сколько PayaraMicro?

Я использую версию 5.183, а также пробовал 5.192.

1 Ответ

0 голосов
/ 25 февраля 2020

Какой тип EJB вы использовали? На мой взгляд, он должен работать на @Singleton и @Stateless. Я не уверен, как другие EJB поддерживаются Payara Micro.

Однако, поскольку Payara Micro поддерживает веб-профиль Java EE, и вы все равно используете веб-приложение, я бы предложил использовать @WebListener чтобы получать уведомления о событиях жизненного цикла.

Это может быть реализовано следующим образом:

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;

@WebListener
public class ContextListener implements ServletContextListener {

    @Override
    public void contextInitialized(ServletContextEvent event) {
        // do needed setup work here
    }

    @Override
    public void contextDestroyed(ServletContextEvent event) {
        // do your cleanup actions here
    }
}

Просто добавьте этот класс в ваш файл WAR.

...