2011-01-24 32 views
3

我們正在考慮構建一個客戶端/服務器應用程序,其中服務器端將是一個EAR應用程序,其中一些會話Bean會暴露API。 我們想知道是否有像EJB模塊中的Web模塊的ServletContextListener,所以我們可以知道服務器端應用程序何時啓動。EJB應用程序啓動時是否發生任何事件?

非常感謝。

回答

4

在JEE5中,沒有其他機制。 ServletContextListener是最好的,便攜式的解決方案。

在JEE6中,您可以使用Singleton EJB。您可以使用@Startup註釋Singleton EJB,並在應用程序啓動時創建EJB。因此,對於沒有WAR組件的「純EJB」應用程序來說,這將是實現這一目的的機制。

0

沒有辦法,我知道。請參閱this related question

既然你有一個EAR,你可以使用ServletContextListener

2

威爾哈頓基本上有正確的答案,但可能還有一小部分難題要添加。

EAR可能有多個EJB和Web模塊。偶爾也可能需要知道哪一個首先啓動。

可以通過在EAR的META-INF目錄中的Java EE 6 application.xml文件中使用<initialize-in-order>true</initialize-in-order>來獲得確定性。

然後列出的模塊的順序決定了啓動順序並告訴你是否例如當第一個或最後一個模塊啓動時,會調用一個特定的@Startup帶註釋的Singleton。

相關問題