让我有CMT的Stateless
bean。我在bean中有3个方法,2个有TransactionAttributeType.REQUIRED
。这两种方法都是从第三种方法调用的。如何检查交易何时生效?我想检查
@Stateless
@TransactionManagement(TransactionManagementType.CONTAINER)
public class MyBean
{
public RetType methodA()
{
methodB();
//.... is CMT active there?
methodC();
}
@TransactionAttribute(TransactionAttributeType.REQUIRED)
public RetType methodB(){}
@TransactionAttribute(TransactionAttributeType.REQUIRED)
public RetType methodC(){}
}
答案 0 :(得分:3)
TransactionAttributeType.REQUIRED
属性是容器管理事务bean方法的默认属性,因此即使您没有对其进行注释,methodA
也会在方法启动时立即启动的事务中运行(除非您从另一个活动事务中调用该方法,在这种情况下,该方法只是加入当前事务)
当方法退出时(除非从另一个事务调用),事务结束。除非使用methodA
注释,否则TransactionAttributeType.REQUIRES_NEW
调用的任何方法都会加入当前事务。