EJB应用程序启动时是否引发了任何事件?

时间:2011-01-24 17:49:50

标签: java events java-ee ejb

我们正在考虑构建一个客户端/服务器应用程序,其中服务器端将是一个EAR应用程序,其中一些会话Bean公开API。 我们想知道是否有类似于EJB模块中的Web模块的ServletContextListener,因此我们可以知道服务器端的应用程序何时启动。

谢谢你的到来。

3 个答案:

答案 0 :(得分:4)

在JEE5中,没有其他机制。 ServletContextListener是最好的,可移植的解决方案。

在JEE6中,您可以使用Singleton EJB。您可以使用@Startup注释Singleton EJB,并在应用程序启动时创建EJB。因此,对于没有WAR组件的“纯EJB”应用程序,这将是实现此目的的机制。

答案 1 :(得分:2)

Hartung基本上会得到正确答案,但可能仍有一小部分需要补充。

EAR可能有多个EJB和Web模块。偶尔也可能需要知道哪一个首先启动。

可以通过在EAR的META-INF目录中的Java EE 6 application.xml文件中使用<initialize-in-order>true</initialize-in-order>来确定这一点。

然后列出的模块的顺序决定了启动顺序,并告诉您是否例如当第一个或最后一个模块启动时,会调用特定的@Startup注释Singleton。

答案 2 :(得分:0)

我不知道。请参阅this related question

由于您有EAR,因此可以使用ServletContextListener