PayaraMicro不会在EJB或ApplicationScoped上调用@PreDestroy

问题描述 投票:1回答:1

我正在将WAR应用程序从PayaraServer迁移到Payara Micro,以减少RAM使用。

我只是意识到,使用CTRL + C停止实例时,不会调用EJB上的@PreDestroy。

有正确的方法来正确关闭payaramicro实例,因为我想执行一些操作。

感谢您的回答!

或者停用Payara Server中的哪些服务以使用与PayaraMicro一样多的RAM?

我正在使用版本5.183,并且我也尝试了5.192。

war ejb-3.1 payara payara-micro
1个回答
0
投票

您使用哪种EJB?我认为它应该适用于@Singleton@Stateless。我不确定Payara Micro如何支持其他EJB。

但是,由于Payara Micro支持Java EE Web Profile,并且无论如何您都在使用Web应用程序,所以我建议使用@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文件中。

© www.soinside.com 2019 - 2024. All rights reserved.