0

StatelessCMTで豆を食べましょう。Beanには3つのメソッドがあり、2つはTransactionAttributeType.REQUIRED。そして、両方のメソッドは3番目のメソッドから呼び出されます。トランザクションがアクティブになっていることを確認するにはどうすればよいですか?チェックしたい

@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(){}
}
4

1 に答える 1

3

属性はコンテナ管理トランザクションBeanメソッドのTransactionAttributeType.REQUIREDデフォルトであるため、アノテーションを付けなくてもmethodA、メソッドが開始するとすぐに開始するトランザクションで実行されます(別のアクティブなトランザクションからメソッドを呼び出さない限り、その場合はメソッド現在のトランザクションに参加するだけです)。
トランザクションは、メソッドが終了すると終了します(別のトランザクションから呼び出されない限り)。で呼び出されたメソッドはmethodA、注釈が付けられていない限りTransactionAttributeType.REQUIRES_NEW、現在のトランザクションに参加します。

于 2012-12-04T15:03:54.430 に答える