2010-04-25 99 views

回答

21

由於EJB 3.1,單豆可以通知模塊啓動和停止:

@Singleton 
@Startup 
public class StartupBean { 
    @PostConstruct 
    private void postConstruct() { /* ... */ } 

    @PreDestroy 
    private void preDestroy() { /* ... */ } 
} 

此前EJB 3.1,沒有標準,EJB,唯一的解決辦法。我建議在您的EAR中添加一個WAR並使用servlet-context-listener。

+0

我發現我的應用程序在GlassFish 3.1中,@Singleton @Startup EJB得到了一個@PersistenceContext EntityManager被關閉。我的解決方法是在該EJB中有一個計時器,該計時器在2秒後執行。 (杜!) – 2011-04-21 21:19:30

+3

這聽起來像是一個錯誤,我會建議報告它。 – 2011-04-21 23:16:42

17

據亞當邊的真實世界的Java EE模式 - 反思最佳實踐(見summary of the patterns)和服務啓動模式,這的確是bkail表明

  • 與Java EE 6 = EJB 3.1使用@Singleton與@Startup(也許還有@DependsOn)
  • 之前,唯一的標準和便攜的方式是使用Servlet API,例如一個HttpServlet在其init()方法中啓動EJB,並且在web.xml中將load-on-startup設置爲1。