Подтвердить что ты не робот

Eager/автозагрузка EJB/нагрузки EJB при запуске (на JBoss)

EJB кажутся загруженными лениво - при каждом доступе.

Однако я хочу инициализировать их с нетерпением - то есть всякий раз, когда запускается контейнер. Как это достигается (в частности, в JBoss)

В этом разделе приведены некоторые подсказки, но это не совсем удовлетворительно.

4b9b3361

Ответ 1

Как и EJB 3.1, singleton beans может быть извещен о запуске и остановке модуля:

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

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

До EJB 3.1 нет стандартного решения EJB. Я бы предложил добавить WAR к вашему EAR и использовать сервлет-контекст-слушатель.

Ответ 2

В соответствии с Адамом Биеном Реальный мир Java EE Patterns - переосмысление лучших практик (см. резюме шаблонов) и шаблон Service Starter, это действительно, как предполагает bkail

  • с Java EE 6 = EJB 3.1 использует @Singleton с @Startup (и, возможно, также с @DependsOn)
  • до этого единственным стандартным и переносимым способом является использование Servlet API, например. HttpServlet, запускающий EJB в своем методе init() и загрузку при запуске, установленный в 1 в web.xml.