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

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

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

这个主题提供了一些提示,但并不十分令人满意。

从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。

根据Adam Bien的真实世界Java EE模式 – 重新思考最佳实践(参见模式摘要 )和Service Starter模式,它确实像bkail建议的那样

  • 使用Java EE 6 = EJB 3.1使用@Singleton和@Startup(也可能使用@DependsOn)
  • 在此之前,唯一标准和可移植的方法是使用Servlet API,例如,在其init()方法中启动EJB的HttpServlet和在web.xml中设置为1的load-on-startup。