セッション・データを共有可能にするアセンブル

デフォルト状態のセッション管理機能では、サーブレット 2.3 以降の API 仕様に従って、Web モジュール単位によるセッション有効範囲をサポートしています。特定のセッションに関連付けられたデータにアクセスできるのは、同一の Web モジュール内のサーブレットだけです。ただし、IBMApplicationSession オブジェクトか、または IBM® 拡張機能の共有セッション・コンテキストを使用すれば、Web モジュールの有効範囲外のデータを共有することができます。

このタスクについて

IBMApplicationSession オブジェクトは Web モジュールのセッションで取得できる親セッション・オブジェクトであり、ビジネス・レベル・アプリケーションのすべての Web モジュール間でセッション属性を共有できます。ビジネス・レベル・アプリケーションのデフォルトの有効範囲はエンタープライズ・アプリケーションです。 共有セッション・コンテキスト・オプションはセッション属性の有効範囲も拡張します。 共有セッション・コンテキスト拡張機能を使用する場合は、ビジネス・レベル・アプリケーション全体またはデフォルトのエンタープライズ・アプリケーションに対して、セッション・オブジェクトは 1 つだけ存在します。

ビジネス・レベル・アプリケーションに対して共有セッションを使用する場合は、セッション内に置かれるすべてのオブジェクトのクラス・ファイルが、分離した共有ライブラリーに存在し、すべてのアプリケーションで共通である必要があります。

IBMApplicationSession メソッドを使用する場合の利点は、それぞれの Web モジュールが各自のセッションを保持することができ、また、共有セッションへの参照も持つことができることです。

製品の前のバージョンからアプリケーションをマイグレーションする場合、 IBMApplicationSession メソッドでは、そのアプリケーションのアプリケーション・ロジックの変更を必要とします。

制約事項: 共有セッションを使用するには、所定のサーバー上にビジネス・レベル・アプリケーション内のすべてのアプリケーションをインストールする必要があります。エンタープライズ・アプリケーションを複数のサーバーに分割することはできません。例えば、"BLA1" 内の 1 つのエンタープライズ・アプリケーションがあるサーバーにインストールされており、同じく "BLA1" の 2 番目のエンタープライズ・アプリケーションが別のサーバーにインストールされている場合、このオプションは使用できません。 このような分割インストールでは、アプリケーションは分散セッションを使用して Web モジュール間でセッション属性を共有することも可能ですが、異なる Web モジュールでセッションへの同時アクセスが行われたときに、セッション・データの整合性が失われます。これにより、TIME_BASED_WRITES など、 セッション管理機能の一部の使用を厳しく制限することにもなります。

この共有セッション・コンテキスト拡張機能が使用可能になったエンタープライズ・アプリケーションの場合、このエンタープライズ・アプリケーション内の Web モジュールでのセッション管理構成は無視されます。エンタープライズ・アプリケーションで定義されているセッション管理構成は、 セッション管理がエンタープライズ・アプリケーション・レベルで上書きされた場合に使用されます。 そうでない場合は、Web コンテナー上のセッション管理構成が使用されます。あるビジネス・レベル・アプリケーション内の複数のエンタープライズ・アプリケーションを使用する場合、セッション管理構成はこのビジネス・レベル・アプリケーション内のすべてのアプリケーションと Web モジュールで共通である必要があります。

ビジネス・レベル・アプリケーションまたはエンタープライズ・アプリケーション内のすべての Web モジュールに定義された HttpSession リスナーは、セッション・イベントのために呼び出されます。リスナーが呼び出される順序は、保証されていません。

ビジネス・レベル・アプリケーション全体でセッション・データを共有するには、以下を完了します。

手順

  1. 以下を完了し、アプリケーション・コード内の IBMApplicationSession オブジェクトを使用して、セッション・データを共有します。
    1. Retrieve the session object
      HttpSession session = request.getSession();
    2. このオブジェクトを IBMSession オブジェクトにキャストして、getIBMApplicationSession メソッドを呼び出します。
      IBMApplicationSession appSession = ((IBMSession)session).getIBMApplicationSession();
    3. 通常のセッション・オブジェクトと同じように appSession を使用します。
  2. 以下を実行し、共有セッション・コンテキスト拡張機能を使用してセッション・データを共有します。
    1. アセンブリー・ツールを開始します。
    2. アセンブリー・ツールで、共有するアプリケーション (EAR ファイル) を右クリックして、「アプリケーションから開く」>「デプロイメント記述子エディター」の順でクリックします。
    3. アセンブリー・ツールのアプリケーション・デプロイメント記述子エディターで、「WebSphere® 拡張」の下の「共有セッション・コンテキスト (Shared session context)」を選択します。エンタープライズ・アプリケーション内のすべての Web モジュールが、セッションに書き込まれる属性のクラス定義を使用できることを確認してください。 共有セッション・コンテキストは、仕様の要件を完全に満たしているとは限りません。
    4. アプリケーション (EAR) ファイルを保存します。 アセンブリー・ツールでは、アプリケーション・デプロイメント記述子エディターを閉じた後、 アプリケーションに対して行った変更を保存するかどうかを確認してください。

トピックのタイプを示すアイコン タスク・トピック



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