Cosminexus 機能解説

[目次][用語][索引][前へ][次へ]

5.5.1 BMT

Enterprise Beanでトランザクション管理をするモデルです。BMTは,Session Bean,およびMessage-driven Beanが対象です(Entity Beanは対象外で,常にCMTになります)。

BMTでは,Enterprise Beanのビジネスメソッドでjavax.transaction.UserTransactionを利用し,次の操作をします。

  1. トランザクションを開始
  2. リソースマネジャを更新
  3. トランザクションをコミットまたはロールバック

Stateless Session Beanでは,1ビジネスメソッド内で1トランザクションを決着(コミットまたはロールバック)させる必要があります。また,Message-driven Beanでは,次のどちらかのメソッド内で,トランザクションを決着(コミットまたはロールバック)させる必要があります。

一方,Stateful Session Beanでは,複数のビジネスメソッドを一つのトランザクションスコープに含めることができます。このとき,EJBコンテナは,Beanインスタンスとトランザクションの関係を保持します。BMTでのStateful Session Beanを次の図に示します。

図5-5 BMTでのStateful Session Bean

[図データ]

表5-17 BMTのトランザクション制御

クライアント側トランザクション Beanインスタンスのトランザクション メソッドに結び付くトランザクション
なし なし なし
T1 なし なし
なし T2 T2
T1 T2 T2

(凡例)
なし:トランザクションを開始しない,またはトランザクションが関連づかない
T1:クライアント側で開始するトランザクション
T2:Bean側で開始するトランザクション

注意
トランザクションが決着していないときに,UserTransaction.beginメソッドを使って新しいトランザクションを開始した場合,EJBコンテナはjavax.transaction.NotSupportedExceptionを送出します。