gpt4 book ai didi

jpa - Java EE 中的 Persistence.createEntityManagerFactory() 忽略 JTA 源

转载 作者:行者123 更新时间:2023-12-02 04:17:59 25 4
gpt4 key购买 nike

我有一个完美运行的应用程序客户端部署到带有一些 EJB、实体等的耳朵内的 GlassFish v2 服务器。我正在使用 eclipselink。

目前我的persistence.xml中有:

<persistence-unit name="mysource">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<jta-data-source>jdbc/mysource</jta-data-source>
<class>entities.one</class>
<class>entities.two</class>
...
<properties>
<property name="eclipselink.target-server" value="SunAS9"/>
<property name="eclipselink.logging.level" value="FINE"/>
</properties>
</persistence-unit>

当我注入(inject) EntityManager 时,这工作正常进入 EJB:
@PersistenceContext(unitName="mysource")
private EntityManager em;

现在我需要动态切换持久性单元/数据库。
我想我可以得到 EntityManager以编程方式:
em = Persistence.createEntityManagerFactory("mysource").createEntityManager();

但我收到以下错误:
Unable to acquire a connection from driver [null], user [null] and URL [null]

甚至在 Map 中“覆盖”javax.persistence.jtaDataSource”到“jdbc/mysource”并调用 createEntityManagerFactory("mysource", map) 也没有什么不同。

我错过了什么?

最佳答案

您试图通过以编程方式创建实体管理器来绕过容器,这意味着您很可能会创建一个非 JTA 数据源(因为它在容器之外,事务类型应该是 RESOURCE_LOCAL),因此您的原始配置是无用的。

尝试注入(inject)具有不同 unitName 属性的实体管理器或创建 RESOURCE_LOCAL 事务类型持久性单元。

关于jpa - Java EE 中的 Persistence.createEntityManagerFactory() 忽略 JTA 源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1675805/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com