#java #jakarta-ee #cdi #message-driven-bean
#java #джакарта-ee #cdi #компонент, управляемый сообщениями
Вопрос:
У меня есть приложение, которое создается как файл .war, у нас есть новое требование для чтения очередей JMS, я пытался добавить ejb-jar.xml файл и указал на прослушиватель сообщений, но развернутое приложение не получило никаких сообщений, и журналы развертывания ничего не показывают о компонентах, управляемых сообщениями. Было интересно, имеет ли структура .ear какое-либо отношение ко всему этому.
Среда: CDI, MyBatis, Wildfly 9.2, Java 1.8
Спасибо.
Комментарии:
1. Просто интересно, вы запускаете свое приложение с
standalone.xml
илиstandalone-full.xml
? Также почему Wildfly 9.2, 10.1 является последней версией.2. Standalone.xml .. я изменил его на standalone-full.xml для этого изменения. когда мы начинали, мы начали с 9.2, мы будем обновлять сервер в будущем
Ответ №1:
Похоже, вы пытаетесь использовать веб-профиль Java EE 7, который определяет, какие компоненты спецификации EE 7 должны быть реализованы контейнером, поддерживающим развертывания только WAR.
В этом профиле указано, что должны быть реализованы требования спецификации «Enterprise JavaBeans (EJB) 3.2 Lite».
Спецификация EJB Lite требует поддержки:
- Только компоненты сессионного компонента без состояния, с сохранением состояния и одноэлементные
- Только локальный бизнес-интерфейс и неинтерфейсный вид
- Транзакции, управляемые контейнером, и транзакции, управляемые компонентом
- Декларативная и программная безопасность
- Перехватчики
- Локальные асинхронные сеансовые вызовы компонента
- Непостоянная служба таймера EJB
- Поддержка дескриптора развертывания (ejb-jar.xml )
В настоящее время там нет поддержки компонента, управляемого сообщениями, в развертываниях WAR.
Следовательно, у вас есть два варианта:
- перенесите ваше приложение на полное развертывание EAR с помощью модуля EJB и модуля WAR;
- Если ваши компоненты, управляемые сообщениями, полностью отделены от веб-модуля, вы могли бы развернуть их в отдельном модуле EJB. Если вам нужно совместно использовать объекты JPA или другие библиотеки, то EAR — более простой способ.
Комментарии:
1. Но вы все равно можете активировать полный профиль java ee при развертывании war, не так ли?
2. Вы можете сделать это, только развернув свой WAR как веб-модуль в EAR и добавив компоненты, не поддерживаемые EJB Lite, в дополнительный модуль EJB в EAR.