WebSphere Application Server - Express for i5/OS, Version 6.1   
             オペレーティング・システム: i5/OS

             目次と検索結果のパーソナライズ化

ローカル・トランザクション内包の考慮事項

IBM WebSphere Application Server は、ローカル・トランザクション拡張デプロイメント記述子を使用して構成できる、ローカル・トランザクション内包 (LTC) をサポートしています。 このトピックでは、このサポートがアプリケーション・プログラマーに提供する利点、および使用する関連設定について説明します。 このトピックでは、ローカル・トランザクションのトランザクション・サポートを構成する最良の方法を決定する際の、考慮点もリストします。

以下のセクションでは、LTC サポートが提供する利点、および各状況でのローカル・トランザクション拡張デプロイメント記述子の設定方法について説明します。

エンタープライズ Bean、または、独立していて調整の必要のない 1 つ以上のデータベースにアクセスするサーブレットを開発できます。
グローバル・トランザクションを使用する必要のないエンタープライズ Bean の場合、 コンテナー・トランザクション・デプロイメント記述子 Transaction 属性を Required ではなく Not supported に設定した Bean をデプロイする方が効果的なことがしばしばあります。

アプリケーションは、IBM WebSphere Application Server の拡張ローカル・トランザクション・サポートを使用することにより、 グローバル・トランザクションの下にあるときと同じ、不特定のトランザクション・コンテキスト内のビジネス・ロジックを実行することができます。 例えば、エンタープライズ Bean は、Transaction 属性が Not supported または Never でデプロイされた場合、 不特定のトランザクション・コンテキスト下で実行されます。

拡張ローカル・トランザクション・サポートは、コンテナー管理の、暗黙のローカル・トランザクション境界を提供します。この境界内で、コンテナーは、アプリケーションの更新およびその接続のクリーンアップをコミットします。 アプリケーションは、デプロイメントの問題からさらに独立して設計できます。 例えば、グローバル・トランザクション・コンテキストを使用するかしないかに関係なく、 ビジネス・ロジックが呼び出される場合などの Transaction 属性 Supports の使用を大きく簡素化します。

アプリケーションは、トランザクション下で実行されているかどうかに関係なく、 獲得、使用、クローズ (get-use-close) パターンの接続方法に従うことができます。アプリケーションは、 グローバル・トランザクションがなくても、すべての状態においてクローズに依存して同様の振る舞いを行い、すなわち、接続時のロールバックを引き起こさないようにすることができます。

複数のリソース・マネージャーの ACID 調整が必要ないシナリオは、多数あります。 そのようなシナリオでは、Transaction ポリシーを Not supported にして ビジネス・ロジックを実行した方が、Required ポリシーの場合よりもパフォーマンスが上がります。 この利点は、Local Transactions - Resolution-control 拡張デプロイメント設定 ContainerAtBoundary で活用されます。この設定を使用すると、アプリケーションとリソース・プロバイダー (データベースなど) との対話が、コンテナーによって開始と終了の両方が行われる暗黙のリソース・マネージャー・ローカル・トランザクション (RMLT) 内で管理されます。 コンテナーは、構成済みの Local Transactions - Boundary (例えば、メソッドの終わりなど) で RMLT をコミットします。 例外によってアプリケーションからコンテナーにコントロールが戻された場合には、開始済みのすべての RMLT がコンテナーによってロールバックされます。

この使用方法は、サーブレットとエンタープライズ Bean の両方に適用されます。

クリーンアップを保障する管理された環境でのローカル・トランザクションを使用できます。
RMLT を明示的に開始および終了することにより RMLT をコントロールするアプリケーションでは、 デフォルトの Local Transactions - Resolution-control 拡張デプロイメント設定、Application を使用することができます。 この場合、コンテナーは、ローカル・トランザクション・コンテキストの境界で、接続を確実にクリーンアップします。

アプリケーションによるローカル・トランザクションの使用方法を説明した J2EE の仕様では、Local Transactions - Resolution-control=Application および Local Transactions - Unresolved-action=Rollback というデフォルト設定によって提供される方法で、これが行われます。Local Transactions - Unresolved-action 拡張デプロイメント記述子が Commit に設定されると、コンテナーは、アプリケーションが開始するが、ローカル・トランザクション内包が終了したとき (例えば、メソッドの終了時) に完了しない、任意の RMLT をコミットします。 この使用方法は、サーブレットとエンタープライズ Bean の両方に適用されます。

EJB コンポーネント・メソッドの期間を超えた、ローカル・トランザクションの期間を延長できます。
J2EE の仕様では、 単一の EJB メソッドに複数の RMLT を使用することは制限されています。これは、この仕様では 、コンテナーによって管理されるメソッド境界の外で範囲設定を行うデバイス がこの仕様になく、RMLT を拡張することができないからです。Local Transactions - Boundary 拡張デプロイメント設定を活用して、以下の利点を得ることができます。
  • RMLT の使用率を著しく増加させる
  • ActivitySession サポートにより 1 フェーズ・リソース・マネージャーとの会話型相互作用を可能にする

ActivitySession を使用して、単一のメソッドより長い境界を持 つ分散コンテキストを提供することができます。 より長い ActivitySession 境界で使用できるよう RMLT を拡張す ることができます (クライアントによって制御可能)。 ActivitySession 境界は、複数のリソース上での ACID 操作が不要な分散トランザクションを使用する必要性を減らします。 この利点は、Local Transactions - Boundary 拡張デプロイメント 設定を ActivitySession にすることで使用できます。 このような拡張 RMLT は、アプリケーションのコントロール下に置かれたままとなるか、Local Transactions - Resolution-control デプロイメント記述子設定の使用に従って、コンテナーによって管理されます。

複数の 1 フェーズ・リソース・マネージャーを調整できます。
XA トランザクション調整をサポートしていないリソース・マネージャーの場合、 クライアントでは、ActivitySession によってバウンドされたローカル・トランザクション・コンテキストを活用することができます。 このようなコンテキストによって、クライアントは、トランザクションのリソース・マネージャーに対する場合と同様に、 リソース・マネージャーによるリソースの更新の完了指示をコントロールすることができます。 クライアントは、ActivitySession を開始して、そのコンテキスト下でエンティティー Bean を呼び出すことができます。 それらの Bean は、ActivitySession の範囲内で RMLT を実行し、RMLT を完了せずに戻ることができます。 クライアントは、その後、コミットまたはロールバック指示の中で ActivitySession を完了し、 調整された指示の中で、ActivitySession によってバインドされた RMLT をコンテナーにより駆動させることができます。
ローカル・トランザクションのサポート構成の例
以下のリストには、ローカル・トランザクションを使用するいくつかのシナリオ例、およびアプリケーションのトランザクション・サポートを構成する最良の方法を決定するときの考慮点 がいくつか示されています。
  • アプリケーションの中で、グローバル・トランザクションを明示的に開始および終了する場合 (Bean 管理トランザクションのセッション Bean およびサーブレットのみ)。

    セッション Bean の場合には、コンポーネントのデプロイメント記述子内で、Transaction typeBean (Bean によって管理されたトランザクションを使用する) に設定します。(サーブレットの場合、この作業は必要はありません。)

  • メソッド内で、XA または XA 以外の単一のリソースにのみアクセスする場合。

    コンポーネントのデプロイメント記述子内で、Local Transactions - Resolution-controlContainerAtBoundary に設定します。 Container トランザクション・デプロイメント記述子で、TransactionSupports に設定します。

  • 1 つ以上の Bean メソッドを経由して、自動的にいくつかの XA リソースにアクセスする場合。

    Container トランザクション・デプロイメント記述子で、TransactionRequiredRequires new、または Mandatory に設定します。

  • 所有するローカル・トランザクションを管理する必要なしに、単一のメソッド内の XA 以外のいくつかのリソースにアクセスする場合。

    コンポーネントのデプロイメント記述子内で、Local Transactions - Resolution-controlContainerAtBoundary に設定します。 Container トランザクション・デプロイメント記述子で、TransactionNot supported に設定します。

  • 単一のメソッド内の XA 以外のいくつかのリソースにアクセスし、それらを個別に管理する場合。

    コンポーネントのデプロイメント記述子内で、Local Transactions - Resolution-controlApplication に設定し、Local Transactions - Unresolved-actionRollback に設定します。 Container トランザクション・デプロイメント記述子で、TransactionNot supported に設定します。

  • 所有するローカル・トランザクションを管理する必要なしに、複数の EJB メソッド呼び出しを経由して、XA 以外の 1 つ以上のリソースにアクセスする場合。

    コンポーネントのデプロイメント記述子内で、Local Transactions - Resolution-controlContainerAtBoundary に、Local Transactions - BoundaryActivitySession に、Bean Cache - Activate atActivitySession に設定します。 Container トランザクション・デプロイメント記述子で、TransactionNot supported に設定し、ActivitySession 属性を RequiredRequires new、または Mandatory に設定します。

  • 複数の EJB メソッド呼び出しを経由して XA 以外のいくつかのリソースにアクセスし、それらを個別に管理する場合。

    コンポーネントのデプロイメント記述子内で、Local Transactions - Resolution-controlApplication に、Local Transactions - BoundaryActivitySession に、Bean Cache - Activate atActivitySession に設定します。 Container トランザクション・デプロイメント記述子で、TransactionNot supported に設定し、ActivitySession 属性を RequiredRequires new、または Mandatory に設定します。




関連概念
ローカル・トランザクション内包 (LTC)
ローカル・トランザクションおよびグローバル・トランザクションの考慮事項
WebSphere Application Server でのトランザクション・サポート
関連タスク
コンポーネント管理トランザクションの使用
同一トランザクション内での 1 フェーズ・コミットおよび 2 フェーズ・コミットのリソースの使用
ActivitySession サービスの使用
トランザクション・デプロイメント属性の構成
参照トピック    

ご利用条件 | フィードバック

最終更新: Jan 21, 2008 7:05:28 PM EST
http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=/com.ibm.websphere.express.iseries.doc/info/iseriesexp/ae/rjta_useltran.html