Java EJB应用程序关闭挂钩

Java EJB应用程序关闭挂钩,java,ejb-3.0,monitoring,jmx,Java,Ejb 3.0,Monitoring,Jmx,在部署/取消部署EJB应用程序(停止JMX MServerBean)时,如何添加一个关闭钩子(就像)来侦听(获取通知) 我可以使用ServletContextListener,不幸的是这是一个EJB jar。使用@Singletonbean并实现@PreDestroy: @Startup @Singleton public class HookBean { @PreDestroy void wholeApplicationShuttingDown { } } 更新:刚

在部署/取消部署EJB应用程序(停止JMX MServerBean)时,如何添加一个关闭钩子(就像)来侦听(获取通知)


我可以使用ServletContextListener,不幸的是这是一个EJB jar。

使用
@Singleton
bean并实现
@PreDestroy

@Startup
@Singleton
public class HookBean {

    @PreDestroy
    void wholeApplicationShuttingDown {
    }
}

更新:刚刚注意到
ejb-3.0
tag<代码>@Singleton已添加到3.1中。但是你还是会发现它很有用。

使用无状态Bean是行不通的。如果不使用无状态bean,则将它们合并在一起——可能有几个这样的bean实例,也可能没有。此外,你不能保证容器不会破坏池中的所有实例,比如在午夜,只是因为它们最近没有被使用。@ TasasZurnkyeWiz引用上面的链接:“因为无状态会话bean从未被钝化,所以它的生命周期只有两个阶段:不存在和准备好调用业务方法。“我爱你的痛苦;-)。是的,在非懒惰bean上使用Spring simple
@PreDestroy
方法实现了这一点。。。实际上,EJB3.1中引入了
@Singleton
@Startup
注释,正是为了解决OP存在的问题(也没有可靠的启动回调…)@TomaszNurkiewicz抱歉,我是瞎子:-)谢谢大家的建议,我将尝试升级到ejb3.1,我们是Singleton。我将看看是否可以升级JBoss 5.1以支持ejb3.1,然后尝试。