maven - 根据 PROD 或 TEST 在 NetBeans 中使用不同的 persistence.xml
问题描述
我有一个带有许多实体类和会话 bean 的 JEE / Maven 项目。
它可以构建,我可以使用 JSF 等几个 Web 模块中的 EJB 模块。该模块使用 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 复制回 main 时,出现以下错误:
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)
如果我在 main 中没有 persistence.xml,我将无法部署我的应用程序,因为我没有 persistenceContext 和 jdbc 连接之间的映射。
提前致谢
解决方案
推荐阅读
- rest - 如何在上传 Google Cloud Storage 对象时公开显示它?
- c# - 如何“填充”模板化字符串
- windows - 停止服务 postgresql-x64-9.4 时出错
- python - 当我尝试捕获/上传图片时,为什么我的 python 脚本会挂起?
- neural-network - 在 PyTorch 训练之外使用多个 GPU
- asp.net-core - 如何使用 Razor 和 .NET Core 2.2 将项目动态添加到 ViewModel 列表中的列表中?
- php - 如何获取打印在由 sql 在 php 代码中创建的表中的行中的单选按钮的值
- python - 如何使用带有 OOP 的枕头在 tkinter 中显示图像
- visual-studio-code - VSCode 是否有关闭当前标签的快捷方式,即 Sublime Text 3 中的“alt + .”?
- python - 新的例外