为了账号安全,请及时绑定邮箱和手机立即绑定

在 PROD 和 TEST 中的数据库的 JNDI 名称之间切换

在 PROD 和 TEST 中的数据库的 JNDI 名称之间切换

森栏 2023-05-17 16:49:04
我正在研究 Maven EJB 模块。我的 EJB 都使用这样的持久性上下文:@PersistenceContext(unitName = "dk.mycontext") private EntityManager em;它真的很好用。问题是当我想从测试更改为实际部署在我的应用程序服务器上时。我正在使用 JUnit 测试并在 Payara Embedded 上运行所有测试。嵌入式 Payara 使用此格式进行 JNDI 查找(在我的 persistence.xml 文件中):<jta-data-source>java:app/jdbc/druid</jta-data-source>测试时发现数据源当我将编译后的模块部署到我成熟的 Payara 服务器时,它抱怨找不到数据源:javax.naming.NameNotFoundException: No object bound to name java:app/jdbc/druid因为它期望 JNDI 是这样的: jdbc/druid这是我直接在服务器上定义 JNDI 名称的格式。问题是 - 据我所知 - payara 服务器不会接受命名约定java:app/jdbc/druid至少管理界面不会验证它。我该如何控制这种疯狂的行为?我不可能是第一个遇到这个问题的人,但我一直无法为这个问题找到可行的解决方案。例如,我可以使用 Maven 控制命名吗?
查看完整描述

1 回答

?
潇湘沐

TA贡献1816条经验 获得超6个赞

使用 Maven 配置文件:


持久性.xml


...

<jta-data-source>${datasource}</jta-data-source>

...

pom.xml


<properties>

    <datasource>java:app/jdbc/druid</datasource>

</properties>


<profiles>

<profile>

   <id>release</id>

   <properties>

      <datasource>jdbc/druid</datasource>

   </properties>

</profile>

</profiles>


查看完整回答
反对 回复 2023-05-17
  • 1 回答
  • 0 关注
  • 98 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信