我有一个JEE / Maven项目,其中包含许多实体类和会话bean。
它可以构建,并且我可以将多个Web模块中的EJB模块与JSF等一起使用。该模块使用Payara服务器中定义的数据连接。
现在,我想构建一些Junit测试脚本,以使用嵌入式Maven和Payara自动测试会话bean。
从其他文章中,我得出的结论是我可以具有以下结构:
/src
/main
/java
/resources
/META-INF
persistence.xml
/test
/java
/resources
/META-INF
persistence.xml
这将使我可以使用两个不同的persistence.xml文件。
我现在遇到的一个问题是payara服务器需要数据源的JNDI名称,如下所示:
jdbc//myDatasource
嵌入payara时需要以下格式:
java:app/jdbc/myDataSource
因此,在运行测试和部署时会给我带来麻烦。
但是我无法嵌入netBeans / Maven / Payara来使用位于测试中的persistence.xml文件。它始终使用main中的一个。这意味着我的JUint测试无法运行,因为他们找不到正确的数据源。
我的persistence.xml在主目录中:
...
<persistence-unit name="dk.myDS" transaction-type="JTA">
<jta-data-source>jdbc/druid</jta-data-source>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
...
我在测试中的persistence.xml
....
<persistence-unit name="dk.myDS" transaction-type="JTA">
<jta-data-source>java:app/jdbc/druid</jta-data-source>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
....
如何强制netBeans / maven使用正确的persistence.xml?
是否有解决此问题的另一种方法?我拒绝相信我是唯一遇到此问题的人。但是我没有看到任何解决方案。
编辑:
如果我在main下删除了persistence.xml,我的测试将按预期运行。
当我将persistence.xml复制回主目录时,出现以下错误:
Caused by: com.sun.appserv.connectors.internal.api.ConnectorRuntimeException: Invalid resource : jdbc/druid__pm
at org.glassfish.jdbcruntime.service.JdbcDataSource.validateResource(JdbcDataSource.java:82)
at org.glassfish.jdbcruntime.service.JdbcDataSource.setResourceInfo(JdbcDataSource.java:63)
如果我主要没有persistence.xml,则因为我没有persistenceContext和jdbc连接之间的映射,所以无法部署我的应用程序。
预先感谢