2010-04-25 69 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。