Возникает ли какое-либо событие при запуске приложения EJB? - PullRequest
3 голосов
/ 24 января 2011

Мы думаем о создании клиент-серверного приложения, где на стороне сервера будет приложение EAR с некоторыми сессионными компонентами, предоставляющими API. Мы хотели бы знать, есть ли что-то вроде ServletContextListener для веб-модулей в модулях EJB, чтобы мы могли знать, когда запускается приложение на стороне сервера.

Спасибо заранее.

Ответы [ 3 ]

4 голосов
/ 24 января 2011

В JEE5 нет другого механизма.ServletContextListener - лучшее портативное решение.

В JEE6 вы можете использовать Singleton EJB.Вы можете комментировать Singleton EJB с помощью @Startup, и EJB будет создан при запуске приложения.Таким образом, для "чистого EJB" -приложения без компонента WAR это будет механизм для этого.

2 голосов
/ 25 января 2011

У Уилла Хартунга в основном правильный ответ, но, возможно, еще есть маленький кусочек головоломки, который нужно добавить.

EAR может иметь несколько EJB и веб-модулей. Иногда может также потребоваться узнать, какой из них запускается первым.

Определенность в этом можно получить, используя <initialize-in-order>true</initialize-in-order> в файле application.xml Java EE 6 в директории META-INF вашего EAR.

Порядок перечисленных модулей затем определяет порядок запуска и говорит вам, например, определенный синглтон, аннотированный @Startup, вызывается при запуске первого или последнего модуля.

0 голосов
/ 24 января 2011

Я так и не узнаю. См этот связанный вопрос .

Поскольку у вас есть EAR, вы можете использовать ServletContextListener.

...