JCache を使用した Liberty セッション・パーシスタンスの構成

サーバーの再始動後または予期しないサーバー障害後にセッション・データを維持する必要がある場合は、Java™ Caching (JCache) を使用してセッション・データを保持するように Liberty を構成することができます。 この構成は、複数のサーバー間でのセッション・データの共有や、フェイルオーバー発生時のセッション・データのリカバリーを可能にします。

Open Liberty バージョン 21.0.0.6 以降では、J キャッシュを使用した Liberty セッション・パーシスタンスの構成については、 Open Liberty Web サイト を参照してください。

JCache を使用してセッション・データを永続化するように Liberty で 1 つ以上のサーバーを構成するには、以下のステップを実行します。

手順

  1. すべてのサーバーで共有セッション管理構成を定義します。
    1. sessionCache-1.0 機能を有効にします。
    2. JCache プロバイダーの場所を指す共有ライブラリーを定義します。
      <library id="jCacheVendorLib">
        <fileset dir="${shared.resource.dir}/hazelcast" includes="hazelcast.jar"/>
      </library>
    3. セッション・キャッシュ構成からライブラリーを参照します。
      <httpSessionCache libraryRef="jCacheVendorLib"/>
    4. 必要な JCache ベンダーの構成を次の 3 つの方法のいずれかで指定します。
      • プロバイダー固有の URI を指定する。 javax.caching.spi.CachingProvider.getCacheManager メソッドへの指定には、JCache プロバイダーが文書化する URI 構文を使用します。 この URI は通常、プロバイダー固有の構成ファイルへのパスです。
        <httpSessionCache libraryRef="jCacheVendorLib" uri="file:${shared.resource.dir}/hazelcast/hazelcast.xml"/>
      • プロバイダー固有のプロパティーが存在する場合は、そのプロパティーをキーと値のペアとして、httpSessionCache のネストされたプロパティー・エレメントに指定する。 javax.caching.spi.CachingProvider.getCacheManager メソッドへの指定には、JCache プロバイダーが文書化するプロパティー・キーと値を使用します。
        <httpSessionCache libraryRef="jCacheVendorLib">
          <properties hazelcast.config.location="file:${shared.resource.dir}/hazelcast/hazelcast.xml"/>
        </httpSessionCache>
      • プロバイダー固有のシステム・プロパティーを指定します。 システム・プロパティーは、 jvm.options ファイルを使用して Liberty で設定できます。

      httpSession エレメントおよび httpSessionCache エレメントについて詳しくは、「 JCache セッション・パーシスタンス」を参照してください。

      例えば、Hazelcast を JCache プロバイダーとして使用してセッション・パーシスタンスを構成するには、server.xml を次のように構成します。

      <server description="Demonstrates HTTP Session Persistence configuration with JCache">
        <featureManager>
          <feature>sessionCache-1.0</feature>
          <feature>servlet-4.0</feature>
        </featureManager>
      
        <httpEndpoint id="defaultHttpEndpoint" host="*" httpPort="${httpPort}"/>
      
        <library id="jCacheVendorLib">
          <fileset dir="${shared.resource.dir}/hazelcast" includes="hazelcast.jar"/>
        </library>
      
        <httpSessionCache libraryRef="jCacheVendorLib"
                          uri="file:${shared.resource.dir}/hazelcast/hazelcast.xml"/>
      
        <httpSession cloneId="${cloneId}"/>
        <application location="${shared.app.dir}/test.ear"/>
      </server>
      ヒント: セッション・データを同じデータベースに保持するように複数のサーバーを構成する場合は、それらのサーバーがセッション管理構成を共有するようにしてください。 これ以外のどの構成もサポートされません。

      HTTP サーバー・プラグインは、応答または要求ヘッダーに挿入されるクローン ID を使用して、要求と要求の間でセッション・アフィニティーを保持します。 通常、クローン ID は変更されませんが、 Liberty では、クローン ID はサーバーの初回始動時に生成され、 --clean オプションを指定してサーバーを始動すると再生成されます。 実動で使用する場合、 クローン ID を手動で割り当てることによって、ID が安定し、要求アフィニティーが確実に保持されます。 クローン ID はサーバーごとに固有でなければならず、英数字で構成されていなければなりません。クローン ID は ステップ 2で指定します。

      セキュリティー用など、必要な Hazelcast 構成は、 ${shared.resource.dir}/hazelcast/hazelcast.xml ファイルに指定できます。

  2. 各サーバーの bootstrap.properties ファイル に固有の変数を指定します。
    • ${wlp.user.dir}/servers/s1/bootstrap.properties
      httpPort=9081
      cloneId=s1
    • ${wlp.user.dir}/servers/s2/bootstrap.properties
      httpPort=9082
      cloneId=s2
  3. Liberty サーバーをホストするすべてのコンピューターのシステム・クロックを同期化します。 システム・クロックが同期していないと、期限前にセッションの無効化が発生する可能性があります。
  4. オプション: Libertyで HTTP セッションとセキュリティを統合する。 デフォルトでは、セキュリティーが有効な保護リソース内でセッションを作成してそのセッションにアクセスした後に、そのセッションにアクセスできるのは、そのセッションの元の所有者のみです。 セッション・セキュリティー (セキュリティー統合) は、デフォルトでは使用可能に設定されています。
  5. オプション: 構成した各サーバーに要求を経路指定するために、 Web サーバー・プラグインをインストールして構成します 。 セッション・アフィニティーが保持されるのは、プラグイン構成で、サーバー構成のクローン ID と一致するクローン ID が指定されている場合のみです。