TomEE Plus, похоже, не находит "ejb-jar.xml" в войне приложений

Моя главная цель - перенести приложение EJB 2.x, написанное для WebSphere, на веб-приложение, развертываемое для сервера Tomcat. Но я хочу к этому как к миграции один на один.

Поэтому я настроил TomEE (apache-tomee-plus-1.0.0) и сохранил конфигурацию подкаталога /apps в качестве каталога развертывания.

Когда я помещаю файл *.war в каталог /apps, OpenEJB успешно распаковывает архив и загружает его. Но я не вижу загрузки EJB в логах. Я думаю, что OpenEJB игнорирует "ejb-jar.xml" в "/apps/BdbWeb/META-INF".

Log-Снип:

INFO main OpenEJB.startup.config - Extracting jar: C:\Entwicklung\apache-tomee-plus-1.0.0\apps\BdbWeb.war
INFO main OpenEJB.startup.config - Extracted path: C:\Entwicklung\apache-tomee-plus-1.0.0\apps\BdbWeb
DEBUG main OpenEJB.options - Using default 'openejb.tempclassloader.skip=none'  Possible values are: none, annotations, enums, all or NONE or ALL
DEBUG main OpenEJB.options - Using default 'openejb.webservices.enabled=true'
DEBUG main OpenEJB.options - Using default 'tomee.jaxrs.deploy.undeclared=false'
DEBUG main OpenEJB.options - Using default 'openejb.webservices.enabled=true'
DEBUG main OpenEJB.options - Using default 'openejb.check.classloader=false'
INFO main OpenEJB.options - Using 'openejb.descriptors.output=false'
INFO main OpenEJB.options - Using 'openejb.descriptors.output=false'
INFO main OpenEJB.options - Using 'openejb.validation.output.level=VERBOSE'
INFO main OpenEJB.startup.config - Enterprise application "C:\Entwicklung\apache-tomee-plus-1.0.0\apps\BdbWeb.war" loaded.

Когда я добавляю хотя бы одну аннотацию (например, @Remote или @Stateful) в класс Java, я вижу соответствующие записи в журнале. Итак, OpenEJB нашел аннотации.

Но есть много классов и большой файл ejb-jar.xml! Я хочу избежать ручного добавления правильной аннотации к каждому классу...! Надеюсь, вы поможете мне найти ошибку.

Может быть, это вопрос структуры? У меня есть следующая структура в файле войны:

  • BdbWeb.war
    • страницы
      • *.jsp
    • изображений
      • *.jpg
    • META-INF
      • EJB-jar.xml
      • MANIFEST.MF
      • openejb-jar.xml (создан вручную; надеялся, что это поможет - но это не так)
    • таблицы стилей
      • *.css
    • WEB-INF
      • классы
        • де
          • справочники с классами
        • log4j.xml
        • hibernate.cfg.xml
      • Lib
        • *.jar
      • web.xml
    • index.jsp

Я уже установил openejb.servicemanager.enabled свойство в файле 'system.properties' для true но это сгенерировало только XML-файл без записей об объектах или объектах.

Что я должен сделать, чтобы получить данный ejb-jar.xml, используемый OpenEJB?

Кстати: действительно ли самодельный openejb-jar.xml необходим...?

1 ответ

Решение

Требуется только небольшая настройка: для Java EE 7 требуется расположение для функции "EJBs in .WARs". WEB-INF/ejb-jar.xml

Для нас было бы неплохо проверить это и выдать предупреждение. Я создал билет на это здесь

Примечания стороны:

  • Нет, openejb-jar.xml не обязательно
  • настройка openejb.servicemanager.enabled тоже не нужно

Вы видели что-то в документации, которая указала openejb.servicemanager.enabled требовался в TomEE? Если так, указатель на документ был бы хорош - я позабочусь, чтобы он был удален.

Другие вопросы по тегам