Hitachi

Cosminexus V11 アプリケーションサーバ 機能解説 基本・開発編(Webコンテナ)


2.22.2 セッションマネージャの指定

セッションマネージャは,ユーザ定義プロパティで指定します。ユーザ定義プロパティを次に示します。

webserver.sessionManager.<コンテキストルート名>.className=<セッションマネージャのクラス名>

セッションマネージャは,war単位に指定します。<コンテキストルート名>にwarのコンテキストルートを指定します。<セッションマネージャのクラス名>に使用するライブラリのセッションマネージャを指定します。コンテキストルート名が「/examples」の場合の設定例を次に示します。

webserver.sessionManager./examples.className=de.javakaffee.web.msm.MemcachedBackupSessionManager

webserver.sessionManager.<コンテキストルート名>.classNameで指定できる値は,de.javakaffee.web.msm.MemcachedBackupSessionManagerとなります。それ以外の値を指定した場合は,アプリケーションの起動に失敗します。

サーバ単位でセッションマネージャを指定する場合は,コンテキストルート名にはアスタリスクを指定します。設定例を次に示します。

webserver.sessionManager.*.className=de.javakaffee.web.msm.MemcachedBackupSessionManager

war単位の指定とサーバ単位の指定を同時に指定することもできます。その場合は,war単位で指定したセッションマネージャを優先します。それ以外のwarはアスタリスクで指定したセッションマネージャが指定されます。

〈この項の構成〉

(1) セッションマネージャの指定機能のバックグラウンド処理

セッションマネージャを指定した場合,ライブラリ側のバックグラウンド処理の実装によっては,セッションのタイムアウト処理やバックアップ処理が実行されます。ライブラリ側のバックグラウンド処理が実行されるようにするためには,Webコンテナ側でスレッドを作成する必要があります。

スレッドは,J2EEサーバ用ユーザプロパティファイルのwebserver.sessionManager.backgroundProcessor.threadsのプロパティに,スレッド数を指定することで作成できます。設定例を次に示します。

webserver.sessionManager.backgroundProcessor.threads=2

この値のデフォルト値は0です。スレッド数はサーバ単位での指定であり,セッションマネージャを指定したすべてのアプリケーションで使い回されます。セッションマネージャの指定機能の使用の有無に関係なく,指定した数のスレッドが作成されます。この値を-1にした場合または不正な値を指定した場合,デフォルト値が使用されます。スレッドが作成されない場合,指定されたセッションマネージャのバックグラウンド処理は実行されません。

注意事項

スティッキーセッションを無効にしてmemcached session managerを使用する場合,バックグラウンド処理でセッションのタイムアウト処理やバックアップ処理は実行されません。memcached session managerでスティッキーセッションを無効にする場合は,J2EEサーバ用ユーザプロパティファイルのwebserver.sessionManager.backgroundProcessor.threadsのプロパティに0(デフォルト値)を設定してください。

指定されたセッションマネージャのバックグラウンド処理を実行する場合,実行間隔を指定できます。バックグラウンド処理は,J2EEサーバ用ユーザプロパティファイルのwebserver.sessionManager.backgroundProcessor.delayのプロパティに指定した実行間隔(秒単位)を6倍した間隔で実行されます。10を指定した場合,60秒間隔でバックグラウンド処理が実行されます。設定例を次に示します。

webserver.sessionManager.backgroundProcessor.delay=10

この値のデフォルト値は10です。実行間隔はサーバ単位での指定になり,セッションマネージャを指定したすべてのアプリケーションで同じ値を使用します。この値を0以下にした場合,バックグラウンド処理は実行されません。不正な値を指定した場合,デフォルト値が使用されます。

(2) HttpSessionオブジェクト数の上限値の指定

指定されたセッションマネージャのHttpSessionオブジェクト数の上限値を指定できます。上限値はmaxActiveSessionsプロパティに指定します。設定例を次に示します。classNameと同じように,コンテキストルート名にアスタリスクを指定できます。

webserver.sessionManager./examples.maxActiveSessions=-1

HttpSessionオブジェクト数の上限値を設定した場合の動作は,cosminexus.xmlの<war>タグ内の<http-session>-<http-session-max-number>を設定した場合と同じ動作になります。cosminexus.xmlに上限値を設定した場合は,警告メッセージを出力してcosminexus.xmlの設定を無視します。

(3) セッションマネージャのプロパティの指定

classNameとmaxActiveSessionsはアプリケーションサーバで用意するプロパティですが,指定されたセッションマネージャのプロパティを指定することもできます。webserver.sessionManager.<コンテキストルート名>.propertiesのあとに,セッションマネージャのプロパティ名を指定します。指定できるプロパティは各セッションマネージャを参照してください。propertiesのコンテキストルート名にはアスタリスクは指定できません。

webserver.sessionManager.<コンテキストルート名>.properties.<プロパティ名>=<値>

memcached session managerの指定例を次に示します。プロパティの詳細はmemcached session managerのドキュメントを参照してください。

webserver.sessionManager./examples.properties.memcachedNodes=node1:11211
webserver.sessionManager./examples.properties.sticky=false
webserver.sessionManager./examples.properties.sessionBackupAsync=false

(4) セッションフェイルオーバ機能との関係

アプリケーションサーバのセッションフェイルオーバ機能の前提となる設定と,セッションマネージャの指定機能の関係を次に示します。

(a) アプリケーションサーバのセッションフェイルオーバ機能の前提となる設定

  • HTTPセッションのスティッキー(Sticky)の設定

    アプリケーションサーバのセッションフェイルオーバ機能はスティッキーセッションを使用することが前提となっています。スティッキーセッションを使用することで,リクエストを処理するインスタンスを限定して性能劣化を防ぎます。

    セッションマネージャの指定機能を使用したクラウド環境では,インスタンスのスケールインおよびスケールアウトのために,スティッキーセッションは使用しないことを前提とします。グローバルセッションをインメモリ製品に保存することで,性能劣化を防ぎます。スティッキーセッションは通常,負荷分散機とライブラリ側で設定します。

  • ホストの時刻の設定

    システム内のJ2EEサーバが稼働するそれぞれのノードは同じ時刻を設定します。時刻が異なる場合の動作は保証しません。

(b) アプリケーションサーバのデータベースセッションフェイルオーバ機能の前提となる設定

  • HttpSessionオブジェクト数の上限値の指定

    アプリケーションサーバのデータベースセッションフェイルオーバ機能の場合,cosminexus.xmlの<http-session>-<http-session-max-number>で指定します。セッションマネージャの指定機能では,maxActiveSessionsで指定します。設定例を次に示します。

    webserver.sessionManager./examples.maxActiveSessions=-1
  • 完全性保証モード

    完全性保証モードでは,グローバルセッション情報がロックされます。ロックされた場合にライブラリの動作が保証できないため,完全保証モードは無効にしてください。デフォルトは無効です。

  • デフォルトの実行待ちキュー,Webアプリケーション単位の実行待ちキュー,およびURLグループ単位の実行待ちキューの設定

    データベースセッションフェイルオーバの設定の注意事項なので,セッションマネージャの指定機能は関係ありません。

(5) memcached session managerの設定

(a) 使用するファイル

セッションマネージャの指定機能では,ライブラリとしてmemcached session managerを使用します。ライブラリを使用するために必要なファイルを次に示します。memcached session managerの詳細に関しては,開発元のドキュメントを参照してください。

表2‒64 セッションマネージャの指定機能で使用するファイル

ファイル

バージョン

CCCサポートバージョン

入手先

memcached-session-manager-2.3.2.jar

2.3.2

11-10

memcached session managerの開発元のサイトから,サポートしているバージョンを入手してください。

memcached-session-manager-tc9-2.3.2.jar

2.3.2

11-10

elasticache-java-cluster-client-1.1.2.jar (memcached AWS用クライアント)

1.1.2

11-10

memcached session managerの機能を使用する場合に,上記以外のファイルが必要になる場合があります。詳細は開発元のドキュメントを参照してください。

(b) ファイルの設定

アプリケーションサーバで,memcached session managerに接続する場合,(a)にあるファイルを,J2EEサーバ用オプション定義ファイルに定義します。また,ライブラリの設定をJ2EEサーバ用ユーザプロパティファイルに設定します。設定例を次に示します。ライブラリの設定のclassNameには,memcached session managerのセッションマネージャを指定します。memcachedNodesには接続先を設定します。stickyには,スティッキーセッションを有効にしないため,falseを指定します。また,sessionBackupAsyncにはfalseを指定し,Explicitヒープも無効にします。

J2EEサーバ用オプション定義ファイルの例
add.class.path=C:\lib\elasticache-java-cluster-client-1.1.2.jar
add.class.path=C:\lib\memcached-session-manager-2.3.2.jar
add.class.path=C:\lib\memcached-session-manager-tc9-2.3.2.jar
add.jvm.arg=-XX:-HitachiUseExplicitMemory
J2EEサーバ用ユーザプロパティファイルの例
webserver.sessionManager./examples.className=de.javakaffee.web.msm.MemcachedBackupSessionManager
webserver.sessionManager./examples.properties.memcachedNodes=node1:11211
webserver.sessionManager./examples.properties.sticky=false
webserver.sessionManager./examples.properties.sessionBackupAsync=false

(6) memcached session managerの注意事項