我正在使用Wildfly 8.1和Postgres 9.2以及最新的jdbc驱动程序(非XA配置)
如果我有这样的会话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()
的方法调用中,em
是否与EntityManager(method1()
)使用的底层连接相同?
如果他们共享相同的jta-transaction,那我怎么不需要XA数据源而只需要常规数据源呢? (假设数据源的查找名称也是EntityManager的默认数据源)
我无法在ejb 3.1规范中找到核心化。
除了我理解的问题,我需要自己关闭数据源连接,但事务将由容器管理(如果我错了,请纠正我)
答案 0 :(得分:1)
我不认为连接是一样的。据我所知,您将在同一个池中获得由应用程序服务器管理的2个不同的连接。
如果是这样,您就无法在2个连接上共享简单的事务。您必须在两个资源之间共享事务管理器,因此请使用XA。