JCache を使用した Liberty セッション・パーシスタンスの構成
サーバーの再始動後または予期しないサーバー障害後にセッション・データを維持する必要がある場合は、Java™ Caching (JCache) を使用してセッション・データを保持するように Liberty を構成することができます。 この構成は、複数のサーバー間でのセッション・データの共有や、フェイルオーバー発生時のセッション・データのリカバリーを可能にします。
バージョン 21.0.0.6 以降では、J キャッシュを使用した Liberty セッション・パーシスタンスの構成については、 Open Liberty Web サイト を参照してください。
JCache を使用してセッション・データを永続化するように Liberty で 1 つ以上のサーバーを構成するには、以下のステップを実行します。
手順
- すべてのサーバーで共有セッション管理構成を定義します。
-
sessionCache-1.0機能を有効にします。 - JCache プロバイダーの場所を指す共有ライブラリーを定義します。
<library id="jCacheVendorLib"> <fileset dir="${shared.resource.dir}/hazelcast" includes="hazelcast.jar"/> </library> - セッション・キャッシュ構成からライブラリーを参照します。
<httpSessionCache libraryRef="jCacheVendorLib"/> - 必要な 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 ファイルに指定できます。
- プロバイダー固有の URI を指定する。
-
- 各サーバーの bootstrap.properties ファイル に固有の変数を指定します。
- ${wlp.user.dir}/servers/s1/bootstrap.properties
httpPort=9081 cloneId=s1 - ${wlp.user.dir}/servers/s2/bootstrap.properties
httpPort=9082 cloneId=s2
- ${wlp.user.dir}/servers/s1/bootstrap.properties
- Liberty サーバーをホストするすべてのコンピューターのシステム・クロックを同期化します。 システム・クロックが同期していないと、期限前にセッションの無効化が発生する可能性があります。
- オプション: Libertyで HTTP セッションとセキュリティを統合する。 デフォルトでは、セキュリティーが有効な保護リソース内でセッションを作成してそのセッションにアクセスした後に、そのセッションにアクセスできるのは、そのセッションの元の所有者のみです。 セッション・セキュリティー (セキュリティー統合) は、デフォルトでは使用可能に設定されています。
- オプション: 構成した各サーバーに要求を経路指定するために、 Web サーバー・プラグインをインストールして構成します 。 セッション・アフィニティーが保持されるのは、プラグイン構成で、サーバー構成のクローン ID と一致するクローン ID が指定されている場合のみです。