【发布时间】:2014-12-07 05:33:09
【问题描述】:
在 CMT J2EE 环境(容器管理事务)中,当我 JDNI 查找 DataSource 对象并调用 DataSource.getConnection 时,使用什么事务/连接?
此连接是(潜在分布式)事务的一部分吗? getConnection() 每次我为同一个 DataSource 对象调用它时是否返回相同的 Connection?我只知道使用本机 SQL 语句通过同一个 EntityManager 使用 Connections。
这让我很困惑。据我了解,SessionContext 定义了一个事务系统,每次我使用数据源时都会使用该系统。我的问题是在会话 bean 中使用了 DataSource.getConnection(),然后关闭了此连接。如果遇到问题会发出SessionContext.setForRollBack(true)。
因此,服务的事务上下文如何与数据源相关联?
如果我们每次使用或至少查找数据源时都生成一个新连接,那么我在理解我已经知道的东西时就会遇到问题。任何澄清都会很棒。我知道容器管理事务和其他系统,但 DataSource 的实际行为完全超出了我的范围。
【问题讨论】: