Приложение EJB 3.1, развернутое как ТОЛЬКО ДЛЯ ВОЙНЫ: Что относительно ejb-jar.xml?

У меня есть приложение JavaEE6, состоя из веб-материала и EJBs и который развертывается как ТОЛЬКО ДЛЯ ВОЙНЫ (использующий EJB3.1). Сборка основана на Знатоке. Я просто читал о новой возможности заказать инициализацию модуля в Java EE 6 здесь, в котором я также нуждаюсь для своего приложения. Кроме того, я хотел бы иметь опцию определить некоторые свойства EJB в XML.

Так как пример развертывается как проект EAR, порядок определяется в application.xml. Но в РАЗВЕРНУТОМ НА ВОЙНЕ проекте, нет никакого application.xml. Теперь я задаюсь вопросом, где я могу определить такую информацию? Или действительно ли возможно использовать application.xml так или иначе в ВОЕННОМ развертываемом приложении?

Править:

Ой я не считал право примера порядка модуля, на первом моменте я думал, что это было о, в котором порядке загружаются EJBs в моем приложении. Конечно, у меня есть только один модуль в моем ВОЕННОМ приложении, таким образом заказывание не имеет никакого смысла.

Хорошо, но поскольку я в нем, один большой вопрос остается (также изменил заголовок вопроса для отражения изменения): Что относительно ejb-jar.xml? Я могу так или иначе определить материал о своем EJBs в XML (как ее полезное для некоторых настроек, для предотвращения перекомпиляции)?

8
задан Ingo Fischer 26 July 2010 в 16:49
поделиться

2 ответа

Короче говоря, это невозможно при развертывании на основе WAR.

Функция инициализации модулей в Java EE 6 предназначена для инициализации различных модулей приложения в определенном порядке. Когда у вас есть EJB-приложение на основе WAR, у вас больше нет отдельных модулей для EJB и Web-приложения. Есть только один модуль - модуль веб-приложения в развертывании на основе WAR.

Поэтому, если вам нужно добиться такой же возможности, как порядок инициализации модулей, предлагаемый в Java EE 6, вам придется сделать одно из следующих действий:

  • Выделить EJB в отдельный модуль и использовать развертывание на основе EAR.
  • Это более или менее хитрость, как это было сделано в Java EE 5, и вам лучше избегать ее. Возможно, вы захотите встроить логику, чтобы убедиться, что синглтонные EJB были созданы (предполагается, что это связано с использованием синглтонов в вашем приложении), прежде чем использовать их в коде.

Расположение ejb-jar.xml в WAR-файле

В спецификации EJB 3.1 (в главе Packaging) рассматривается вопрос о расположении файла ejb-jar.xml при развертывании в WAR:

В .war-файле дескриптор развертывания хранится под именем .war. дескриптор хранится с именем WEB-INF/ejb-jar.xml.

PS: Я еще не пробовал этот стиль развертывания. YMMV.

9
ответ дан 5 December 2019 в 12:07
поделиться

Дополнительное примечание по EJB в .wars и обработке ejb-jar.xml. Как уже отмечалось, это расположение WEB-INF / ejb-jar.xml, но также обратите внимание, что это место только проверяется, даже если внутри WEB-INF / lib / есть jar-файлы ejbs - по стандартным правилам любые Файлы META-INF / ejb-jar.xml игнорируются.

Экспертная группа по этому вопросу разделилась, поэтому, если у вас есть предпочтения, еще не поздно отправить отзыв в список экспертной группы EJB 3.1 для рассмотрения в EJB.next.

Я проголосовал за то, чтобы по-прежнему разрешать отдельным jar-файлам иметь файлы META-INF / ejb-jar.xml, точно так же, как эти jar-файлы теперь могут содержать persistence.xmls, beans.xmls, веб-фрагменты и т. Д. Более серьезной проблемой для меня было то, что расходится с API встроенного контейнера EJB, который поддерживает путь к классам в стиле EAR, который позволяет использовать несколько jar-файлов / модулей, каждый из которых может содержать файл META-INF / ejb-jar.xml. В результате, если вы используете встроенный API для тестирования приложения ejb с несколькими банками, которое составлено в один файл .war, тогда вы столкнетесь с задачей объединения любых данных ejb-jar.xml, которые у вас есть, в один файл ejb. -jar.xml для веб-приложения. Какая-то боль для пользователей.

5
ответ дан 5 December 2019 в 12:07
поделиться
Другие вопросы по тегам:

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