让我们将Stateless
bean与CMT一起使用。我在bean中有3种方法,在TransactionAttributeType.REQUIRED
中有2种。两种方法都从第三种方法调用。如何检查交易何时进行?我要检查
@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(){}
}
最佳答案
TransactionAttributeType.REQUIRED
属性是容器管理的事务Bean方法的默认属性,因此,即使您未对其进行注释,methodA
也会在该方法启动后立即启动的事务中运行(除非您从另一个活动事务中调用该方法) ,那么该方法只需加入当前交易)。
当方法退出时的方法结束时,事务结束(再次,除非从另一个事务调用)。除非使用methodA
注释,否则TransactionAttributeType.REQUIRES_NEW
调用的任何方法都将加入当前事务。