开发者

Eager / auto loading of EJB / load EJB on startup (on JBoss)

EJBs seem to be loaded lazily - whenever accessed.

However, I want to initialize them eagerly - i.e. whenever开发者_StackOverflow社区 the container starts-up. How is this achieved (in JBoss in particular)

This topic gives some hints, but isn't quite satisfactory.


As of EJB 3.1, singleton beans can be notified of module start and stop:

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

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

Prior to EJB 3.1, there is no standard, EJB-only solution. I'd suggest adding a WAR to your EAR and using a servlet-context-listener.


According to Adam Bien's Real World Java EE Patterns - Rethinking Best Practices (see a summary of the patterns) and the Service Starter pattern, it is indeed as bkail suggests

  • with Java EE 6 = EJB 3.1 use @Singleton with @Startup (and perhaps also with @DependsOn)
  • prior to that the only standard and portable way is to use the Servlet API, e.g. a HttpServlet starting the EJBs in its init() method and load-on-startup set to 1 in web.xml.
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜