我正在研究 Maven EJB 模塊。我的 EJB 都使用這樣的持久性上下文:@PersistenceContext(unitName = "dk.mycontext")
private EntityManager em;它真的很好用。問題是當我想從測試更改為實際部署在我的應(yīng)用程序服務(wù)器上時。我正在使用 JUnit 測試并在 Payara Embedded 上運行所有測試。嵌入式 Payara 使用此格式進行 JNDI 查找(在我的 persistence.xml 文件中):<jta-data-source>java:app/jdbc/druid</jta-data-source>測試時發(fā)現(xiàn)數(shù)據(jù)源當我將編譯后的模塊部署到我成熟的 Payara 服務(wù)器時,它抱怨找不到數(shù)據(jù)源:javax.naming.NameNotFoundException: No object bound to name java:app/jdbc/druid因為它期望 JNDI 是這樣的: jdbc/druid這是我直接在服務(wù)器上定義 JNDI 名稱的格式。問題是 - 據(jù)我所知 - payara 服務(wù)器不會接受命名約定java:app/jdbc/druid至少管理界面不會驗證它。我該如何控制這種瘋狂的行為?我不可能是第一個遇到這個問題的人,但我一直無法為這個問題找到可行的解決方案。例如,我可以使用 Maven 控制命名嗎?
1 回答

瀟湘沐
TA貢獻1816條經(jīng)驗 獲得超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>
添加回答
舉報
0/150
提交
取消