ActivitySession およびトランザクション・コンテキスト

このトピックでは、 トランザクション・コンテキストと ActivitySession コンテキスト間の階層関係について説明します。ActivitySession サービスによって定義されるこの関係では、 すべてのトランザクション・コンテキストが、ActivitySession コンテキストの内側、または外側に完全に入っている必要があります。

ActivitySession コンテキストは、トランザクション・コンテキストに非常に似ており、エンタープライズ Bean の活動化におけるライフサイクルの選択項目を拡張します。 すなわち、1 つ以上のトランザクションをカプセル化することができます。 ActivitySession コンテキストは、分散コンテキストです。 トランザクション・コンテキストと同様に、Bean 管理、またはコンテナー管理とすることができます。 ActivitySession コンテキストは、 主にクライアントが、 そのクライアントが使用するエンタープライズ Bean のライフサイクルをスコープ宣言するために使用します。 このライフサイクルは、クライアントが開始した個々のトランザクションの域を超えて、または除外して行います。

ActivitySession のオーバーヘッドはトランザクションよりも小さく、 呼び出したエンタープライズ Bean のライフサイクルをスコープ宣言するためにのみ使用するトランザクションに代わって使用できます。 ActivitySession の活動化ポリシーを持つ Bean の場合、 その Bean によって起動された任意のリソース・マネージャー・ローカル・トランザクション (RMLT) の継続時間は、RMLT の始動時の Bean メソッドに代わって、ActivitySession の継続時間によってバウンドできます。これにより、 Enterprise JavaBeans (EJB) の仕様に記述されたシナリオの域を超えて、 エンタープライズ Bean で RMLT をより柔軟かつ広範囲に使用することが可能になります。 EJB 仕様は、RMLT が Bean メソッドの終了前に完了する必要があることを定義します。 これは、Bean メソッドが、これらの仕様において使用可能なローカル・トランザクション用の唯一の内包境界であるためです。

以下の規則は、トランザクションと ActivitySession との間の関係を定義します。
  • EJB または Web コンテナーは、グローバル・トランザクションがない場合、常に、 ローカル・トランザクション内包 (LTC) を使用します。 LTC は、メソッドまたは ActivitySession でスコープ宣言することができます。
  • メソッドのディスパッチ前に、コンテナーにより、常に LTC トランザクション・コンテキストまたはグローバル・トランザクション・コンテキストのいずれかの存在が確認されますが、両方が確認されることはありません。
  • ActivitySession は、相互にネストすることはできません。 ネストした ActivitySession を起動しようとすると、UserActivitySession.beginSession() で com.ibm.websphere.ActivitySession.NotSupportedException が発生します。
  • ActivitySession は、1 つ以上のグローバル・トランザクションを完全にカプセル化できます。
  • アプリケーションは、チェックポイントを指定するか、またはすべてのリソースをリセットすることによって、ActivitySession を終了することができます。endSession(EndModeCheckpoint) 操作を 実行すると、ActivitySession の下で調整された作業にチェックポイントが指定され、 その後にコンテキストが終了します。endSession(EndModeReset) 操作を実行すると 、ActivitySession の下で調整された作業が整合性の最終ポイントにリセットされ、 その後にコンテキストが終了します。
  • ActivitySession は、グローバル・トランザクションによってカプセル化することができないほか、ActivitySession とグローバル・トランザクションの境界のオーバーラップもできません。 グローバル・トランザクション・コンテキストの下で ActivitySession を開始しようとすると 、UserActivitySession.beginSession() で com.ibm.websphere.ActivitySession.NotSupportedException が発生します。 未完了のグローバル・トランザクションを含む ActivitySession で endSession(EndModeCheckpoint) を呼び出そう とすると、com.ibm.websphere.ActivitySession.ContextPendingException が発生します。グローバル・トランザクションと ActivitySession コンテキストのいずれも、 影響は受けません。 endSession(EndModeReset) が呼び出されると、ActivitySession はリセットされ、グローバル・トランザクションは rollback_only とマークされます。
  • ActivitySession によって完全にカプセル化されたそれぞれのグローバル・トランザクションは、ActivitySession 内の他のすべてのグローバル・トランザクションとは独立しています。1 つのグローバル・トランザクションのロールバックは、他のすべてのトランザクション、 または ActivitySession 自体に影響しません。
  • ActivitySession およびグローバル・トランザクション・コンテキストは、 1 つ以上の直列実行グローバル・トランザクションをカプセル化する ActivitySession と共存可能です。
  • EJB ホーム・メソッドは、ActivitySession に参加できません。この状況はデッドロックを発生させる場合があるためです。EJB ホーム・メソッドは、メソッド独自の個別 LTC で実行されます。

トピックのタイプを示すアイコン 概念トピック



タイム・スタンプ・アイコン 最終更新: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cas_ogtlt
ファイル名:cas_ogtlt.html