容器管理事务的活动

时间:2012-12-04 14:53:57

标签: java java-ee transactions ejb-3.0

让我有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(){}
}

1 个答案:

答案 0 :(得分:3)

TransactionAttributeType.REQUIRED属性是容器管理事务bean方法的默认属性,因此即使您没有对其进行注释,methodA也会在方法启动时立即启动的事务中运行(除非您从另一个活动事务中调用该方法,在这种情况下,该方法只是加入当前事务) 当方法退出时(除非从另一个事务调用),事务结束。除非使用methodA注释,否则TransactionAttributeType.REQUIRES_NEW调用的任何方法都会加入当前事务。