Нетерпеливый / автоматическая загрузка EJB / загружают EJB на запуске (на JBoss)

EJBs, кажется, загружаются лениво - каждый раз, когда получено доступ.

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

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

20
задан Bozho 25 April 2010 в 09:18
поделиться

2 ответа

Начиная с EJB 3.1, одноэлементные bean-компоненты могут получать уведомления о запуске и остановке модуля:

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

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

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

22
ответ дан 29 November 2019 в 23:57
поделиться

Согласно книге Адама Бьена «Real World Java EE Patterns - Rethinking Best Practices» (см. сводку шаблонов ) и паттерну Service Starter, это действительно так, как предлагает bkail

  • с Java EE 6 = EJB 3.1 использует @Singleton с @Startup (и, возможно, также с @DependsOn)
  • до этого единственным стандартным и переносимым способом является использование Servlet API, например HttpServlet запускает EJB-компоненты в своем методе init (), а для параметра load-on-startup установлено значение 1 в web.xml.
17
ответ дан 29 November 2019 в 23:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: