我该如何添加一个关闭钩子(就像JVM关闭钩子)来监听EJB应用程序的部署/卸载(以停止JMX MServerBean),并在获得通知时进行操作?我可以使用ServletContextListener,但不幸的是,这是一个EJB jar文件。
使用@Singleton
bean并实现@PreDestroy
:
@Startup
@Singleton
public class HookBean {
@PreDestroy
void wholeApplicationShuttingDown {
}
}
更新:刚刚注意到 ejb-3.0
标签。 @Singleton
是在3.1版本中添加的。但是你可能会发现它很有用。
使用一个无状态Bean带有@PreDestroy
方法
@PreDestroy
方法就可以解决问题...实际上,@Singleton
和@Startup
注释正是在EJB 3.1中引入的,以解决OP所遇到的问题(也没有可靠的启动回调...)。 - Tomasz Nurkiewicz