Должен ли компонент, управляемый сообщениями, быть развернут в файлах .ear?

#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.

Следовательно, у вас есть два варианта:

  1. перенесите ваше приложение на полное развертывание EAR с помощью модуля EJB и модуля WAR;
  2. Если ваши компоненты, управляемые сообщениями, полностью отделены от веб-модуля, вы могли бы развернуть их в отдельном модуле EJB. Если вам нужно совместно использовать объекты JPA или другие библиотеки, то EAR — более простой способ.

Комментарии:

1. Но вы все равно можете активировать полный профиль java ee при развертывании war, не так ли?

2. Вы можете сделать это, только развернув свой WAR как веб-модуль в EAR и добавив компоненты, не поддерживаемые EJB Lite, в дополнительный модуль EJB в EAR.