根据PROD或TEST在NetBeans中使用不同的persistence.xml

时间:2019-08-08 14:24:04

标签: maven netbeans jndi payara payara-micro

我有一个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连接之间的映射,所以无法部署我的应用程序。

预先感谢

0 个答案:

没有答案