Cosminexus 機能解説
EJBコンテナでトランザクション管理をするモデルです。CMTは,Session Bean,Entity Bean,Message-driven Beanが対象です。CMTでは,Beanのメソッド単位でトランザクションの属性を指定します。なお,トランザクション属性は,J2EEアプリケーションに含まれるSession Bean,Entity Bean,またはMessage-driven Beanの属性(プロパティ)として設定します。J2EEアプリケーションの設定については,マニュアル「Cosminexus システム構築ガイド」を参照してください。
トランザクションがコミットできない場合,EJBコンテナは次の処理をします。
トランザクション属性の振る舞いについて,トランザクション属性の種類ごとに図に示して説明します。
クライアントがトランザクションスコープ内でEnterprise Beanのビジネスメソッドを呼び出したとき,トランザクションコンテキストはEnterprise Bean側には伝播しません。また,クライアントがトランザクションスコープ外でEnterprise Beanのビジネスメソッドを呼び出したとき,トランザクションコンテキストはEnterprise Beanには伝播しません。
NotSupported属性の振る舞いを次の図に示します。
図5-6 NotSupported属性
クライアントがトランザクション内でEnterprise Beanのビジネスメソッドを呼び出したとき,トランザクションコンテキストがEnterprise Bean側に伝播し,Enterprise Beanのビジネスメソッドは呼び出し側のトランザクションスコープ内に入ります。また,クライアントがトランザクションスコープ外でEnterprise Beanのビジネスメソッドを呼び出したとき,Enterprise Bean側で新しいトランザクションが開始されます。
Required属性の振る舞いを次の図に示します。
図5-7 Required属性
クライアントがトランザクション内でEnterprise Beanのビジネスメソッドを呼び出したとき,トランザクションコンテキストがEnterprise Bean側に伝播し,Enterprise Beanのビジネスメソッドは呼び出し側のトランザクションスコープ内に入ります。また,クライアントがトランザクションスコープ外でEnterprise Beanのビジネスメソッドを呼び出したとき,トランザクションコンテキストはEnterprise Beanに伝播しません。
Supports属性の振る舞いを次の図に示します。
図5-8 Supports属性
クライアントがトランザクション内でEnterprise Beanのビジネスメソッドを呼び出したとき,EJBコンテナは新しいトランザクションを開始します。また,クライアントがトランザクションスコープ外でEnterprise Beanのビジネスメソッドを呼び出したときも,同様に新しいトランザクションがEJBコンテナによって開始されます。
RequiresNew属性の振る舞いを次の図に示します。
図5-9 RequiresNew属性
クライアントがトランザクション内でEnterprise Beanのビジネスメソッドを呼び出したとき,トランザクションコンテキストがEnterprise Bean側に伝播し,Enterprise Beanのビジネスメソッドは呼び出し側のトランザクションスコープ内に入ります。また,クライアントがトランザクションスコープ外でEnterprise Beanのビジネスメソッドを呼び出したとき,EJBコンテナはクライアントに次の例外を送出します。
Mandatory属性の振る舞いを次の図に示します。
図5-10 Mandatory属性
クライアントがトランザクション内でEnterprise Beanのビジネスメソッドを呼び出したとき,EJBコンテナはクライアントに次の例外を送出します。
また,クライアントがトランザクションスコープ外でEnterprise Beanのビジネスメソッドを呼び出したとき,トランザクションコンテキストはEnterprise Beanに伝播しません。
Never属性の振る舞いを次の図に示します。
図5-11 Never属性
Enterprise Beanの種別ごとに指定できるトランザクション属性およびデフォルト値を次の表に示します。EJB仕様ではBean種別ごとに指定できるトランザクション属性が規定されています。CMP 2.0については,EJB仕様でオプションとされている,ほかのトランザクション属性は指定できません。デフォルト値についてはEJB仕様では規定されていません。Cosminexusの場合,EJBのDDでCMTの指定があり,トランザクション属性の指定がない場合のデフォルト設定は,次の表のようになります。
表5-18 Enterprise Beanの種別ごとに指定できるトランザクション属性およびデフォルト値
種別 | 指定できるトランザクション属性 | デフォルト値 |
---|---|---|
Stateless Session Bean Stateful Session Bean (SessionSynchronization以外) Entity Bean(BMP,CMP 1.1) |
|
Supports |
Stateful Session Bean (SessionSynchronization) |
|
Required |
Entity Bean(CMP 2.0) |
|
Required |
Message-driven Bean(Connector 1.0に準拠したリソースアダプタを使用する場合) |
|
Required |
Message-driven Bean(Connector 1.5に準拠したリソースアダプタを使用する場合) |
|
Required※ |
アノテーションを使用した,DDを持たないSession Bean |
|
Required |
注 ただし,DDを持たないEnterprise Beanの場合,デフォルト値(Required)が規定されています。
注※ EJBの仕様では指定可能ですが,CosminexusではConnector 1.5トランザクションに参加するメッセージ配信ができないため,Requiredを指定できません。指定できるのはNotSupportedだけです。
All Rights Reserved. Copyright (C) 2006, 2007, Hitachi, Ltd.