У меня есть приложение JavaEE6, состоя из веб-материала и EJBs и который развертывается как ТОЛЬКО ДЛЯ ВОЙНЫ (использующий EJB3.1). Сборка основана на Знатоке. Я просто читал о новой возможности заказать инициализацию модуля в Java EE 6 здесь, в котором я также нуждаюсь для своего приложения. Кроме того, я хотел бы иметь опцию определить некоторые свойства EJB в XML.
Так как пример развертывается как проект EAR, порядок определяется в application.xml. Но в РАЗВЕРНУТОМ НА ВОЙНЕ проекте, нет никакого application.xml. Теперь я задаюсь вопросом, где я могу определить такую информацию? Или действительно ли возможно использовать application.xml так или иначе в ВОЕННОМ развертываемом приложении?
Править:
Ой я не считал право примера порядка модуля, на первом моменте я думал, что это было о, в котором порядке загружаются EJBs в моем приложении. Конечно, у меня есть только один модуль в моем ВОЕННОМ приложении, таким образом заказывание не имеет никакого смысла.
Хорошо, но поскольку я в нем, один большой вопрос остается (также изменил заголовок вопроса для отражения изменения): Что относительно ejb-jar.xml? Я могу так или иначе определить материал о своем EJBs в XML (как ее полезное для некоторых настроек, для предотвращения перекомпиляции)?
Короче говоря, это невозможно при развертывании на основе WAR.
Функция инициализации модулей в Java EE 6 предназначена для инициализации различных модулей приложения в определенном порядке. Когда у вас есть EJB-приложение на основе WAR, у вас больше нет отдельных модулей для EJB и Web-приложения. Есть только один модуль - модуль веб-приложения в развертывании на основе WAR.
Поэтому, если вам нужно добиться такой же возможности, как порядок инициализации модулей, предлагаемый в Java EE 6, вам придется сделать одно из следующих действий:
Расположение ejb-jar.xml в WAR-файле
В спецификации EJB 3.1 (в главе Packaging) рассматривается вопрос о расположении файла ejb-jar.xml при развертывании в WAR:
В .war-файле дескриптор развертывания хранится под именем .war. дескриптор хранится с именем WEB-INF/ejb-jar.xml.
PS: Я еще не пробовал этот стиль развертывания. YMMV.
Дополнительное примечание по 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 для веб-приложения. Какая-то боль для пользователей.