我们正在考虑构建一个客户端/服务器应用程序,其中服务器端将是一个EAR应用程序,其中一些会话Bean公开API。 我们想知道是否有类似于EJB模块中的Web模块的ServletContextListener,因此我们可以知道服务器端的应用程序何时启动。
谢谢你的到来。
答案 0 :(得分:4)
在JEE5中,没有其他机制。 ServletContextListener是最好的,可移植的解决方案。
在JEE6中,您可以使用Singleton EJB。您可以使用@Startup注释Singleton EJB,并在应用程序启动时创建EJB。因此,对于没有WAR组件的“纯EJB”应用程序,这将是实现此目的的机制。
答案 1 :(得分:2)
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
。