WebSphere Application Server, Version 6.0.x   
             オペレーティング・システム: AIX , HP-UX, Linux, Solaris, Windows

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

HTTP セッションで ActivitySessions を使用するための使用法モデル

このトピックでは、WebSphere Web コンテナーで稼働する Web アプリケーションが、ActivitySession コンテキストに参加する方法について説明します。

複数のサーブレットの起動が 同じ論理アプリケーションの一部として発生するように Web アプリケーシ ョンを設計している場合には、サーブレットは、HttpSession を使用して、 サーブレットが複数回起動する間にわたり状態を保持することができます。 ActivitySession コンテキストは、HttpSession まで中断可能な状態の 1 つで、HttpSession をアクセスするサーブレットを後に起動した時点で再開できます。

さらに、ActivitySession は、HttpSession と自動的に関連付けられることにより、 複数の HTTP 起動やサーブレットのインクルードまたは転送を介して ActivitySession へのアクセスの拡張に使用できるほか、EJB の活動化期間のサポートにも使用できます。 EJB の活動化期間は、Web HTTP クライアントのライフ・サイクルによって決定することができます。 HttpSession 内に保管された ActivitySession コンテキストも、ActivitySession 用の処理を特定の Web HTTP クライアントに関連付けるために使用できます。

Web コンテナーは、Web アプリケーション・モジュール内のサーブレットに関連付けられたデプロイメント記述子属性に基づいて ActivitySession を管理します。 以下の 2 つの使用モデルがあります。
  • Web コンテナーが ActivitySession を開始および終了します。
    Web アプリケーションは、ActivitySession のコンテナー制御用に構成されたサーブレットを起動します。
    • HttpSession がある場合は、関連する ActivitySession があります。
    • HttpSession がない場合、サーブレットが HttpSession を開始できます。 これにより、ActivitySession が自動的に開始され、HttpSession に関連付けられます。

    サーブレットは、既存の HttpSession が終了されるまで、 新しい HttpSession を開始できません。 HttpSession 内では、Web アプリケーションが、 関連した ActivitySession コンテキストを使用できる他のサーブレットを起動できます。 Web アプリケーションが HttpSession を終了するサーブレットを起動すると、ActivitySession は自動的に終了します。 これについては、以下の図に示されています。

    この図のテキストで説明されている、ActivitySession の Web コンテナー制御
  • Web アプリケーションが ActivitySession を開始および終了します。
    Web アプリケーションは、 ActivitySession のアプリケーション制御用に構成されたサーブレットを起動します。
    • HttpSession が存在し、関連する ActivitySession がある場合は、 サーブレットが ActivitySession コンテキストを使用または終了できます。
    • HttpSession がない場合、サーブレットが HttpSession を開始できますが、ActivitySession は自動的に開始されません。
    • HttpSession は存在するが、関連する ActivitySession がない場合は、 サーブレットが新しい ActivitySession を開始できます。 これにより、ActivitySession は、自動的に HttpSession に関連付けられます。 ActivitySession は、この ActivitySession が明確に終了されるか、HttpSession が終了するまで継続します。

    サーブレットは、既存の ActivitySession が終了されるまで、 新しい ActivitySession を開始できません。 サーブレットは、既存の HttpSession が終了されるまで、 新しい HttpSession を開始できません。

    HttpSession 内では、Web アプリケーションが、 既存の ActivitySession コンテキストを使用または終了したり、ActivitySession がない場合に新しい ActivitySession を開始したりできる、他のサーブレットを起動できます。 Web アプリケーションが HttpSession を終了するサーブレットを起動すると、ActivitySession は自動的に終了します。 これについては、以下の図に示されています。

    この図のテキストで説明されている、ActivitySession の Web アプリケーション制御

Web アプリケーションは、いずれかの使用モデル用に構成されているサーブレットを起動できます。

以下のポイントは、どちらの使用モデルにも適用されます。

  • HttpSession (および任意の関連した ActivitySession) を終了するには、Web アプリケーションからそのセッションを無効にする必要があります。 これにより、ActivitySession はチェックポイントを指定されます。
  • ActivitySession のコンテキスト内で活動化されるすべてのダウンストリーム EJB は、 サーブレットの起動と起動の間は非活性化されるのではなく、メモリーに保持できます。 これは、クライアントが効果的に Web HTTP クライアントになるためです。
  • Web アプリケーションは、数多くのサーブレットで構成することができますが、Web アプリケーション内の各サーブレットは、ActivitySessionControl の 1 つの値を使用して構成することができます。 ActivitySessionControl により、サーブレットまたはそのコンテナーのどちらが ActivitySession を開始するかが決定されます。
  • アクティブ・トランザクション・コンテキストをカプセル化する ActivitySession コンテキストを HttpSession と関連付けることはできません。 これは、トランザクションがデータベース・ロックを保持する場合があり、 短期間のみ存在するように設計する必要があるためです。 アプリケーションがアクティブ・トランザクションを HttpSession に移動する場合、このトランザクションはロールバックされ、ActivitySession は中断されて HTTPSession になります。 一般に、アプリケーションは、ActivitySession または他の構成を 長期間存続するエンティティーとして使用し、ACID トランザクションをその中で短期間存続するエンティティーとして 使用するよう設計します。
  • ActivitySession の継続時間中の任意の時点において、HttpSession に、ActivitySession を 1 つのみ関連付けることができます。 HttpSession に関連付けされた ActivitySession は、 その ActivitySession の継続時間中は関連付けられたままの状態となり、 最初の ActivitySession が完了するまで、別のものと置き換えることはできません。 ActivitySession は、HttpSession への共用アクセスがあれば、 複数のサーブレットからのアクセスが可能です。
  • ActivitySession は永続的ではありません。 永続的 HttpSession が、この HttpSession をホストするサーバーよりも長く存在する場合には、 キャッシュされたすべての ActivitySession は、ホスティング・サーバーの終了時点で終了します。
  • 関連付けされた ActivitySession の終了前に HttpSession がタイムアウトになった場合、ActivitySession は リセットされます。1。 これにより、ActivitySession リソースは、次のように 整合性の取れる最後のポイントまでロールバックされます。
    • Web アプリケーションが ActivitySession のコンテナー制 御用に構成されたサーブレットを起動した場合、ActivitySession リソースは、 完全にロールバックされます。
    • Web アプリケーションが ActivitySession のアプリケーション制御用に構成されたサーブレットを起動した場合、ActivitySession リソースは、 サーブレットによって指定された最後のチェックポイントまでロールバックされるか、 チェックポイントが指定されていない場合は、完全にロールバックされます。
  • ActivitySession がタイムアウトになると、ActivitySession は 整合性の取れる最後のポイントまでリセットされ (前の項目を参照)、HttpSession は終了します。



関連概念
ActivitySession、グローバル・トランザクション・コンテキスト、 およびローカル・トランザクション内包
ActivitySession サービス・プログラミング・インターフェース
ActivitySession サービス
関連タスク
Web モジュールの ActivitySession デプロイメント属性の構成
1 ActivitySession のリセットにより、 現行の ActivitySession に関連するすべてのリソースは、 整合性の取れる最後のポイントまでロールバックされますが、ActivitySession 内の処理は継続されます。 リセットの完了時に、スレッドは、リセットが呼び出される前と同じ ActivitySession に関連付けられます。ActivitySession リソースは、アクティビティー・セッションにこれ以上参加することはありませんが、 アクティビティー・セッションとの関連は継続します。
参照トピック    

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

最終更新: Jan 22, 2008 12:07:38 AM EST
http://publib.boulder.ibm.com/infocenter/wasinfo/v6r0/index.jsp?topic=/com.ibm.websphere.base.doc/info/aes/ass/ref/ras_ohttp.html