9.5.1 定義方法
トランザクション属性はEnterprise Bean単位,インタフェース単位,メソッド単位にそれぞれ指定できます。指定がない場合は上位の単位で指定されたトランザクション属性が有効になります。
-
Enterprise Beanごとの適用
割り当てたトランザクション属性を,Enterprise Bean内のメソッドに適用します。
-
インタフェースごとの適用
割り当てたトランザクション属性を,インタフェース内のメソッドに適用します。
-
メソッドごとの適用
割り当てたトランザクション属性を,一つのメソッドに適用します。
(1) 編集する属性ファイル
次の属性ファイルのうち,トランザクション属性を設定するEnterprise Beanの種類に対応する属性ファイルを編集します。
-
Session Bean属性ファイル
-
Entity Bean属性ファイル
-
Message-driven Bean属性ファイル
(2) 編集する属性ファイルの取得と属性の設定
-
属性ファイルの取得
次に示すコマンドを実行してEnterprise Beanの属性ファイルを取得します。
- 実行形式
cjgetappprop [<サーバ名称>] [-nameserver <プロバイダURL>] -name <J2EEアプリケーション名> -type ejb -resname <EJB-JAR表示名>/<Enterprise Bean表示名> -c <Enterprise Beanの属性ファイルパス>
- 実行例
cjgetappprop MyServer -name adder -type ejb -resname adder/adder_eb -c C:\home\adder_ejb.xml
-
属性の設定
次に示すコマンドを実行して,Enterprise Beanの属性ファイルの値を反映します。
- 実行形式
cjsetappprop [<サーバ名称>] [-nameserver <プロバイダURL>] -name <J2EEアプリケーション名> -type ejb -resname <EJB-JAR表示名>/<Enterprise Bean表示名> -c <Enterprise Beanの属性ファイルパス>
- 実行例
cjsetappprop MyServer -name adder -type ejb -resname adder/adder_eb -c C:\home\adder_ejb.xml
(3) 編集する属性設定項目
コンテナトランザクション属性(<container-transaction>)の設定項目を次に示します。
項目 |
必須 |
対応するタグ名 |
---|---|---|
説明 |
△ |
<description> |
メソッドの説明 |
△ |
<method> - <description> |
インタフェース種別 |
△ |
<method> - <method-intf> |
メソッド名 |
○ |
<method> - <method-name> |
トランザクション属性 |
○ |
<trans-attribute> |
プロパティの設定項目については,次の個所を参照してください。
-
マニュアル「アプリケーションサーバ リファレンス 定義編(アプリケーション/リソース定義)」の「3.4.1 Session Bean属性ファイルの指定内容」
-
マニュアル「アプリケーションサーバ リファレンス 定義編(アプリケーション/リソース定義)」の「3.5.1 Entity Bean属性ファイルの指定内容」
-
マニュアル「アプリケーションサーバ リファレンス 定義編(アプリケーション/リソース定義)」の「3.6.1 MessageDrivenBean属性ファイルの指定内容」
トランザクション属性の指定とトランザクション管理の動作を,次に示します。
-
NotSupported
コンテナ管理トランザクション内でメソッドを実行しません。
-
Supports
メソッドのトランザクションの処理は場合によって異なります。トランザクション内およびトランザクション外で正しく実行するメソッドに対してだけ,この属性を使用してください。
-
Required
コンテナはメソッドを常にトランザクション内で実行します。
-
RequiresNew
メソッドは,常に新しいトランザクションで実行します。
-
Mandatory
メソッドは,常にクライアントのトランザクションを使用しなければなりません。つまり,クライアントはトランザクション内でメソッドを呼び出さなければなりません。
-
Never
メソッドはトランザクション内で実行できません。つまり,クライアントは,トランザクションの外でメソッドを呼び出さなければなりません。
(4) 注意事項
-
Enterprise Beanの種類によって設定できるトランザクション属性が異なります。設定できるトランザクション属性およびトランザクション管理の動作については,マニュアル「アプリケーションサーバ 機能解説 基本・開発編(コンテナ共通機能)」を参照してください。
-
Session Beanのプロパティ(<transaction-type>)で,Session Beanが自身のトランザクションを管理するよう指定されている場合,この設定でトランザクション属性を変更できません。
-
Message-driven Beanの場合は,onMessageのメソッドだけ設定できます。