如果我们使用数据源(名为'ABC')执行事务,并且在该事务中我们需要与其他数据源(名为'DEF')不同的连接对象
所以我们目前正在做的是,我们在EJB方法上设置了@TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)。在同一个方法中,我们编写了从其他数据源(名为“DEF”)获取新连接的代码。
我们这样做的原因是'正在进行的事务是使用来自名为'ABC'的数据源的连接,但是现在我们需要在其他事务中执行一些其他操作,因此我们需要来自其他数据源的连接'DEF',这就是为什么我们需要通过说NOT_SUPPORTED暂停第一个事务并对新连接执行必要的操作然后再次恢复相同的旧事务'
请验证我的理解。
答案 0 :(得分:0)
TransactionAttributeType.NOT_SUPPORTED
不是你需要的。
您需要使用TransactionAttributeType.REQUIRES_NEW
注释该方法。这将暂停外部事务并创建一个新的独立事务。
答案 1 :(得分:0)
你的推理是合理的。如果您使用Spring,则有一种更简单的方法:
@Transactional( "DEF", propagation: Propagation.NESTED )
这将创建始终使用TransactionManager
DEF
不幸的是,EJB标准不支持NESTED
。
答案 2 :(得分:0)
交易可分为两类
有关更多详细信息,请参阅J2EE在线文档..
干杯!