在启动时(在JBoss上)急切/自动加载EJB / load EJB

时间:2010-04-25 09:11:45

标签: java jboss java-ee ejb-3.0

EJB似乎被懒惰地加载 - 无论何时访问。

但是,我想急切地初始化它们 - 即每当容器启动时。这是如何实现的(特别是在JBoss中)

This topic提供了一些提示,但不太令人满意。

2 个答案:

答案 0 :(得分:21)

从EJB 3.1开始,可以通知单例bean模块的启动和停止:

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

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

在EJB 3.1之前,没有标准的,仅限EJB的解决方案。我建议在你的EAR中添加一个WAR并使用servlet-context-listener。

答案 1 :(得分:17)

根据Adam Bien的真实世界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.