Файл persistence.xml не найден при развертывании EAR в OpenEJB с помощью Arquillian
Я пытаюсь запустить интеграционный тест с 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)
...
Что мне не хватает?