файл persistence.xml не найден при развертывании EAR в OpenEJB с помощью Arquillian - PullRequest
0 голосов
/ 10 января 2019

Я пытаюсь запустить интеграционный тест с Arquillian, используя OpenEJB, встроенный в качестве среды, но развертывание завершается неудачно из-за отсутствия persistence.xml.

Это выполняется в модуле («сервисы») многомодульного проекта maven. Модуль разворачивается как EJB-Jar ("services.jar") в EAR ("services-ear.ear"). Также в EAR я включаю в качестве библиотеки jar («data-1.0-SNAPSHOT.jar») другого модуля моего проекта («data»). Последний модуль содержит сущностные объекты и DAO как EJB. Все DAO имеют EntityManager, который ссылается на модуль персистентности, который объявлен в /META-INF/persistence.xml в «data-1.0-SNAPSHOT.jar». Итак, структура в EAR:

ear
|- services.jar
|- /lib/data-1.0-SNAPSHOT.jar
|- ...

Структура печатается, когда я строю ухо для развертывания, чтобы убедиться, что эти компоненты действительно находятся в архиве. Когда я запускаю интеграционные тесты, появляется OpenEJB («15: 45: 48.345 [LogStreamAsync.Thread] INFO OpenEJB.server - Ready!»), И архивы создаются и развертываются. OpenEJB находит EJB-файлы в «data-1.0-SNAPSHOT.jar» и начинает их развертывание. Тем не менее, он не может найти файл persistence.xml в том же банке. Я проверил, что файл persistence.xml находится в банке. Сообщения, которые я получаю, одинаковы для каждого EJB:

...
15:56:42.167 [LogStreamAsync.Thread] ERROR OpenEJB.startup.validation - FAIL ... PlatformDaoImpl:   A persistence unit must be defined via META-INF/persistence.xml to satisfy @PersistenceContext ref "manager" to unit "".  An example of a suitable persistence.xml might be:<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0"><persistence-unit name=""><jta-data-source>java:openejb/Resource/myDataSource</jta-data-source><non-jta-data-source>java:openejb/Resource/myUnmanagedDataSource</non-jta-data-source><properties><property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(ForeignKeys=true)"/></properties></persistence-unit></persistence>
15:56:42.167 [LogStreamAsync.Thread] ERROR OpenEJB.startup.validation - FAIL ... DefaultThreatResponseStatusDaoImpl:    A persistence unit must be defined via META-INF/persistence.xml to satisfy @PersistenceContext ref "manager" to unit "".  An example of a suitable persistence.xml might be:<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0"><persistence-unit name=""><jta-data-source>java:openejb/Resource/myDataSource</jta-data-source><non-jta-data-source>java:openejb/Resource/myUnmanagedDataSource</non-jta-data-source><properties><property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(ForeignKeys=true)"/></properties></persistence-unit></persistence>
15:56:42.167 [LogStreamAsync.Thread] ERROR OpenEJB.startup.validation - FAIL ... DataSourceDaoImpl: A persistence unit must be defined via META-INF/persistence.xml to satisfy @PersistenceContext ref "manager" to unit "".  An example of a suitable persistence.xml might be:<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0"><persistence-unit name=""><jta-data-source>java:openejb/Resource/myDataSource</jta-data-source><non-jta-data-source>java:openejb/Resource/myUnmanagedDataSource</non-jta-data-source><properties><property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(ForeignKeys=true)"/></properties></persistence-unit></persistence>
15:56:42.167 [LogStreamAsync.Thread] ERROR OpenEJB.startup.validation - FAIL ... TechnologyDaoImpl: A persistence unit must be defined via META-INF/persistence.xml to satisfy @PersistenceContext ref "manager" to unit "".  An example of a suitable persistence.xml might be:<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0"><persistence-unit name=""><jta-data-source>java:openejb/Resource/myDataSource</jta-data-source><non-jta-data-source>java:openejb/Resource/myUnmanagedDataSource</non-jta-data-source><properties><property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(ForeignKeys=true)"/></properties></persistence-unit></persistence>
15:56:42.167 [LogStreamAsync.Thread] ERROR OpenEJB.startup.validation - FAIL ... ear-scoped-cdi-beans_services-ear: A persistence unit must be defined via META-INF/persistence.xml to satisfy @PersistenceContext ref "manager" to unit "".  An example of a suitable persistence.xml might be:<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0"><persistence-unit name=""><jta-data-source>java:openejb/Resource/myDataSource</jta-data-source><non-jta-data-source>java:openejb/Resource/myUnmanagedDataSource</non-jta-data-source><properties><property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(ForeignKeys=true)"/></properties></persistence-unit></persistence>
15:56:42.167 [LogStreamAsync.Thread] ERROR OpenEJB.startup.validation - Invalid EjbModule(name=ear-scoped-cdi-beans_services-ear, path=ear-scoped-cdi-beans_services-ear)
...

Чего мне не хватает?

...