TransactionAttributeType

TransactionAttributeType

让我们将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调用的任何方法都将加入当前事务。

10-01 08:29