gpt4 book ai didi

java - 同一 Java EE session Bean 中的数据源和 EntityManager

转载 作者:行者123 更新时间:2023-11-30 11:13:11 27 4
gpt4 key购买 nike

我正在使用 Wildfly 8.1 和 Postgres 9.2 以及最新的 jdbc 驱动程序(未配置 XA)

如果我有这样一个 session Bean:

@Stateless
public class MySessionBean {
@Resource(lookup="jdbc/mydb")
Datasource ds;

@PersistenceContext // defaults to datasource lookup name "jdbc/mydb"
EntityManager em;

public void method1() {
// will ds.getConnection() and
// the underlying connection used by em be the same?
}
}

ds.getConnection() 是否与 EntityManager (em) 在 method1() 的方法调用中使用的底层连接相同?

如果它们共享同一个 jta-transaction,我为什么不需要 XA 数据源而只需要常规数据源? (假设数据源的查找名称也是 EntityManager 的默认数据源)

我在 ejb 3.1 规范中找不到相关性。

除了这个问题,我明白我需要自己关闭数据源连接,但事务将由容器管理(如果我错了请纠正我)

最佳答案

我不认为连接是相同的。据我了解,您将在应用服务器管理的同一个池中获得 2 个不同的连接。

如果是这样,您就无法在 2 个连接之间共享一个简单的事务。您必须在 2 个资源之间共享事务管理器,因此使用 XA。

关于java - 同一 Java EE session Bean 中的数据源和 EntityManager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26513398/

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