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

Boz*_*zho 20 java jboss java-ee ejb-3.0

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

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

本主题提供了一些提示,但并不十分令人满意.

Bre*_*ail 22

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

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

    @PreDestroy
    private void preDestroy() { /* ... */ }
}
Run Code Online (Sandbox Code Playgroud)

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

  • 这对我来说听起来像个错误; 我建议报告它. (3认同)

Jak*_*olý 17

根据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.