Oracle® Fusion Middleware Oracle Coherence*WebでのHTTPセッション・マネージメントの管理 12c (12.1.3) E56205-03 |
|
![]() 前 |
![]() 次 |
この章では、GlassFish Serverで使用するために、Coherence*Web、セッション状態の永続性および管理モジュールを構成してデプロイする方法について説明します。
この章には次の項が含まれます:
Oracle GlassFish Serverは、軽量型で、柔軟性と拡張可能性に優れたJava EE 6プラットフォームを提供します。これにより、フットプリントが小さく、完全に装備されたJava EEアプリケーション・サーバーが実現されます。このアプリケーション・サーバーは、商用デプロイメント用に完全にサポートされており、スタンドアロン製品として利用できます。Oracle GlassFish Serverは、軽量型インフラストラクチャおよびJava Enterprise Editionの最新の実装を必要とするアプリケーションに最適です。この章では、GlassFish Server上で実行しているアプリケーションからCoherence*Webを使用できるように設定およびデプロイする方法について説明します。
Coherence*Webは、Oracle GlassFish ServerにデプロイされたWebアプリケーションに機能を提供します。旧リリースでは、セッション記憶域にCoherence*Webを使用するには、Coherence*Web WebInstallerでアプリケーションを事前処理する必要がありました。現在のリリースを使用することにより、GlassFish 3.1アプリケーションでは、WebInstallerの事前処理手順は不要になります。
GlassFish用の機能は、coherence\lib
フォルダにあるcoherence-web.jar
ファイルで提供されます。GlassFish用のCoherenceキャッシュの構成とサービスは、default-session-cache-config.xml
ファイルに定義されており、このファイルはcoherence-web.jar
ファイル内にあります。default-session-cache-config.xml
ファイルで定義されているデフォルト・キャッシュ構成とサービス構成は、ほとんどすべてのWebアプリケーションに対応可能です。
Coherence*WebではCoherenceキャッシュを使用してセッション・データを格納するので、coherence.jar
ファイルはWebアプリケーションのクラス・ローダーからも使用できる必要があります。EARスコープまたはWARスコープのクラスタ・ノード上で実行するCoherence*Webの構成の詳細は、「クラスタ・ノードの構成」を参照してください。
デフォルトでは、GlassFish Server上で稼働するCoherenceノードは、記憶域を無効化した状態で構成されます。Webアプリケーションを動作させるには、別のCoherenceキャッシュ・サーバーが稼働している必要があります。
Coherence*Webには、セッションの同時アクセスを制御するためのセッション・ロック・モードがいくつかあります。GlassFishサーバー上では、Coherence*Webは最後の書込みを優先するロックをデフォルトで採用します。これにより、単一のJVMまたは複数のJVMにある複数のスレッドからセッションに同時アクセスできます。ただし、セッションを同時に変更できません。ロック・モードの詳細は、「セッション・ロック・モード」を参照してください。
スプリット・セッション・モデル(SplitHttpSessionModel
)では、小さいセッション属性が単一のキャッシュ・エントリとして格納され、大きい属性が個別のキャッシュ・エントリとして格納されますが、これは、使用されるデフォルトのセッション・モデルです。詳細は、「セッション・モデル」を参照してください。
セッション・データをCoherenceデータ・グリッドに格納することで、GlassFish Serverでヒープ領域を利用できるようになります。セッション・データをGlassFish Serverの外部に格納することにより、セッション・データを失わずにWebアプリケーションとサーバーを再起動できます。また、これによって別々のWebアプリケーションでセッションを共有できます。EARスコープ設定かWARスコープ設定のクラスタ・ノードにあるGlassFish Server上でCoherence*Webを実行できます。アプリケーション・サーバー・スコープはサポートされていません。
次の手順は、GlassFish Server上で実行しているアプリケーションでCoherence*Webを使用するためにデプロイメントを準備する方法を示しています。
Oracle Coherenceをファイル・システムにダウンロードします。「Oracle Coherenceのダウンロード」を参照してください。
glassfish-web.xml
ファイルでWebアプリケーションのセッション持続タイプをcoherence-web
に設定します。「セッション持続タイプの設定」を参照してください。
(オプション)デフォルトのCoherence*Webキャッシュ構成やクラスタ構成をオーバーライドする必要がある場合、default-session-cache-config.xml
ファイルを編集します。「デフォルトのCoherence*Webキャッシュ構成またはクラスタ構成のオーバーライド」を参照してください。
coherence-web.jar
ファイルをWebアプリケーションで利用できるようにします。「Coherence*Webおよびセッション・キャッシュ・ファイルのアプリケーションへのコピー」を参照してください。
web.xml
ファイルを編集して、Webアプリケーションをサーバー・クラスタで利用できるようにします。「Webアプリケーションを配布可能にする方法」を参照してください。
(オプション)アプリケーションがCoherence*Web用に高度な構成を必要とする場合は、WARデプロイメントのweb.xml
ファイルを編集します。「Coherence*Webの構成」を参照してください。
(テストの場合はオプション、本番の場合は強く推奨)GlassFish Serverを実行しているJVMとは別のJVMでキャッシュ・サーバー層を起動します。「キャッシュ・サーバーの起動」を参照してください。
アプリケーションをパッケージ化します。GlassFish ServerにおけるEARスコープ設定やWARスコープ設定のクラスタ・ノードに対してCoherence*Webを構成できます。「クラスタ・ノードの構成」を参照してください。
Coherence*Webをサポートしているすべてのファイルは、Coherenceディストリビューションに付属しています。最新リリースのOracle Coherenceは次のURLで入手できます。
http://www.oracle.com/technetwork/middleware/coherence/overview/index.html
WebアプリケーションのWEB-INF
ディレクトリのglassfish-web.xml
ファイルを作成するか編集します。Webアプリケーションのセッション持続タイプをcoherence-web
に設定します。次に例を示します。
default-session-cache-config.xml
ファイルには、Coherence*WebがHTTPセッション管理を実装するために使用するセッション・キャッシュとサービスのデフォルト定義が記述されています。coherence-web.jar
ファイルに含まれるdefault-session-cache-config.xml
ファイルは、ほとんどのWebアプリケーションに対応可能です。必要に応じて、独自のカスタム・セッション・キャッシュ構成ファイルとtangosol-coherence-override.xml
ファイルを使用して、別のキャッシュ構成とクラスタ構成を指定できます。このファイルは、WebアプリケーションのWEB-INF/classes
ディレクトリに配置する必要があります。
カスタム・セッション・キャッシュ構成ファイル名の指定方法の詳細は、「セッション・キャッシュ構成ファイル名のカスタマイズ」を参照してください。
coherence-web.jar
ファイルは、GlassFish上のCoherence*Webの機能を提供します。GlassFish Serverで実行するアプリケーションからcoherence-web.jar
ファイルを利用できるようにする必要があります。
GlassFish Server上にデプロイする各Webアプリケーションの/WEB-INF/lib/
ディレクトリにcoherence-web.jar
ファイルをコピーします。
Webアプリケーションを、サーバー・クラスタなどの分散環境で実行できるように構成する必要があります。<distributable/>
要素をWebアプリケーションのweb.xml
デプロイメント・ディスクリプタに追加します。<distributable/>
要素は、ルート<web-app>
要素の子です。web.xml
ファイルは、WebアプリケーションのWEB-INF
ディレクトリにあります。
Coherence*Webにより、大半のWebアプリケーションに対応するデフォルト構成を実現します。web.xml
ファイルの<context-param>
要素を使用してCoherence*Web構成を定義します。web.xml
ファイルに<context-params>
要素を追加するか編集することで、デフォルト値をオーバーライドできます。
注意: Webアプリケーション起動後にCoherence*Web構成を変更した場合、Webアプリケーションを再起動する必要があります。動的に更新可能な構成オプションはCoherence*Webにありません。 |
表3-1に、GlassFishサーバー上でCoherence*Web用に用意されているデフォルト値を示します。これらのパラメータの詳細は、付録A「Coherence*Webコンテキスト・パラメータ」を参照してください。
表3-1 Coherence*Webに用意されているデフォルトのコンテキスト・パラメータ値
パラメータ名 | 説明およびデフォルト値 |
---|---|
|
デフォルトは、「ServletContextパス+ServletContext名」です。 Webアプリケーション名を表すための、一貫性のある、一意の文字列です。 |
|
デフォルトは Webアプリケーション起動時にすべてのCoherenceノードが起動するため、Webアプリケーション停止時にもCoherenceノードを停止する必要があります。 |
|
デフォルトは セッションはスタンドアロンのキャッシュ・サーバーに格納できます。 |
|
デフォルトは |
|
デフォルトは セッション・ロックは、デフォルトでは無効になっています。この構成により最後の書込みを優先するポリシーが有効になります。 |
|
デフォルトは セッション・ロックは、デフォルトでは無効になっています。この構成により最後の書込みを優先するポリシーが有効になります。 |
|
デフォルトは
|
GlassFish ServerでセッションCookieの生成と解析が行われるため、セッションCookieを構成するCoherence*Webコンテキスト・パラメータは使用されません。サーブレットのコンテキストをクラスタ化できるようにCoherence*Webを構成できる場合でも、GlassFishではこの機能はサポートされません。
GlassFishで使用する際に有効でないCoherence*Webコンテキスト・パラメータを表3-2に示します。これらのコンテキスト・パラメータが存在する場合、GlassFishで警告ログが返されます。これらのパラメータの詳細は、付録A「Coherence*Webコンテキスト・パラメータ」を参照してください。
表3-2 GlassFish Serverで有効ではないCoherence*Webコンテキスト・パラメータ
パラメータ名 | 有効ではない理由 |
---|---|
|
GlassFish Server用の値は、 |
|
GlassFish Serverは、セッションでシリアライズ不可能なユーザー・データをキャッシュします。 |
|
GlassFish ServerによりセッションCookieの生成と解析が行われるため、このパラメータは有効ではありません。 |
|
GlassFish ServerによりセッションCookieの生成と解析が行われるため、このパラメータは有効ではありません。 |
|
GlassFish ServerによりセッションCookieの生成と解析が行われるため、このパラメータは有効ではありません。 |
|
GlassFish ServerによりセッションCookieの生成と解析が行われるため、このパラメータは有効ではありません。 |
|
GlassFish ServerによりセッションCookieの生成と解析が行われ、URLがセッションIDでエンコードされるため、このパラメータは有効ではありません。 |
|
|
|
GlassFish用のCoherence*Webのクラスタ化されたServletContextがCoherence*Webでサポートされていないため、このパラメータは有効ではありません。 |
|
GlassFish ServerによりセッションCookieの生成と解析が行われるため、このパラメータは有効ではありません。 |
|
GlassFish ServerによりセッションCookieの生成と解析、およびURLのエンコードとデコードが行われるため、このパラメータは有効ではありません。 |
|
GlassFish ServerによりセッションCookieの生成と解析が行われ、URLがセッションIDでエンコードされるため、このパラメータは有効ではありません。 |
|
GlassFish ServerによりセッションCookieの生成と解析が行われ、URLがセッションIDでエンコードされるため、このパラメータは有効ではありません。 |
表3-3に、glassfish-web.xml
ファイルの有効なセッション構成パラメータを示します。GlassFishによりセッションCookieが作成され、URLがサーブレットでエンコードされるため、これらは有効です。
表3-3 glassfish-web.xmlの有効なGlassFishセッション構成パラメータ
パラメータ名 | 有効である理由 |
---|---|
|
GlassFishによってセッションCookieが生成されます。 |
|
GlassFishによってセッションCookieが生成されます。 |
|
GlassFishによってセッションCookieが生成されます。 |
|
GlassFishによってセッションCookieが生成されます。 |
|
GlassFishによってセッションCookieが生成されます。 |
|
GlassFish ServerによってセッションCookieが生成されます。 |
|
GlassFish ServerによってセッションCookieが生成されます。 |
|
このパラメータを |
|
この値には、 |
|
この値には、 |
GlassFish上のCoherence*Webを使用する際にglassfish-web.xmlファイルで有効でない構成パラメータを表3-4
に示します。これらのパラメータがglassfish-web.xml
ファイルで構成されている場合は、無視されます。
表3-4 glassfish.web.xmlのCoherence*Webで有効ではないGlassFishコンテキスト・パラメータ
パラメータ名 | 有効ではない理由 |
---|---|
|
Coherence*Webによりセッション管理が制御されます。セッションを複数のアプリケーションで共有できるため、特定のアプリケーションに対してセッションの数は計算できません。 |
|
Coherence*Webでは必ずセッション・データがリクエストの最後においてキャッシュにフラッシュされますが、非同期で行われる場合があります。 |
|
このパラメータは、 |
|
このパラメータは、 |
|
このパラメータは、GlassFish Server |
Coherenceキャッシュ・サーバーは、すべてのキャッシュ・データを格納して管理します。これは、専用のJVM(アウトオブプロセス)内でも、GlassFish Serverインスタンス内(インプロセス)でも実行できます。Coherenceデータ・クラスタ内の上位ノード(最初のノード)は起動に数秒間かかることがあります。下位のノードで必要な起動時間は最小限です。
アウトオブプロセス・トポロジ(記憶域を無効化したGlassFish ServerインスタンスとスタンドアロンCoherenceキャッシュ・サーバー)を使用している場合は、最初にキャッシュ・サーバーを起動し、次にGlassFish Serverインスタンスを起動します。これにより、Coherenceを使用するアプリケーションの起動時間は最小限(ミリ秒単位)になります。Coherenceを使用する追加Webアプリケーションはどれも上位データ・メンバーにならず、そのため、それらがGlassFish Serverの起動に与える影響は最小限になります。
スタンドアロンCoherenceキャッシュ・サーバーの起動方法
Coherenceキャッシュ・サーバーを起動するためのスクリプトを作成します。
キャッシュ・サーバーを起動するスクリプトの例を次に示します。この例では、Sun JVMの使用を前提としています。詳細は、『Oracle Fusion Middleware Oracle Coherenceでのアプリケーションの開発』のJVMチューニングに関する項を参照してください。
java -server -Xms512m -Xmx512m -cp <Coherence installation dir
>/lib/coherence-web.jar:<Coherence installation dir
>/lib/coherence.jar -Dtangosol.coherence.management.remote=true -Dtangosol.coherence.cacheconfig=default-session-cache-config.xml -Dtangosol.coherence.session.localstorage=true com.tangosol.net.DefaultCacheServer
クラスパスのcoherence-web.jar
とcoherence.jar
を含める必要があります。Coherence*Webの場合、default-session-cache-config.xml
ファイルをキャッシュ構成ファイルとして使用します。これは、「Coherence*Webおよびセッション・キャッシュ・ファイルのアプリケーションへのコピー」で入手したファイルです。キャッシュ・サーバーに対して定義されているキャッシュ構成は、同じCoherenceクラスタで実行されているアプリケーション・サーバーに対して定義されているキャッシュ構成と一致する必要があります。
Coherence*Webで追加のCoherenceキャッシュを実行している場合は、default-session-cache-config.xml
ファイルに格納されているセッション構成とキャッシュ構成情報(一般的にcoherence-cache-config.xml
ファイルで定義)をマージする必要があります。キャッシュ構成とセッション構成は、GlassFish ServerとCoherenceキャッシュ・サーバーで一貫している必要があります。
これらのファイルをマージする方法の詳細は、『Oracle Fusion Middleware Oracle Coherence統合ガイド』のCoherenceキャッシュとセッション情報のマージに関する項を参照してください。
前述の手順で説明したスクリプトを使用して、Coherenceキャッシュ・サーバーを1つ以上起動します。
記憶域を有効化したGlassFish Serverインスタンスまたは記憶域を無効化したGlassFish Serverインスタンスを起動する手順は次のとおりです。
デフォルトでは、Coherence*Webを使用可能なGlassFish Serverインスタンスは、記憶域を無効化した状態で起動します。
記憶域を有効化した状態でGlassFish Serverインスタンスを起動する方法は数種類あります。その一つとして、サーバー起動コマンドにコマンド行プロパティの-Dtangosol.coherence.session.localstorage=true
を含める方法があります。
別の方法としては、default-session-cache-config.xml
ファイルでlocal-storage
要素をtrue
に設定することです。次に例を示します。
... <local-storage>true</local-storage> ...
GlassFish Serverでは、EARスコープ設定やWARスコープ設定のクラスタ・ノードに対してのみCoherence*Webを構成できます。GlassFish Serverクラス・ローダーの動作仕様により、アプリケーション・サーバー・スコープ設定のクラスタ・ノードは構成できません。アプリケーション・サーバー・スコープ設定、EARスコープ設定またはWARスコープ設定のクラスタ・ノードの詳細は、「クラスタ・ノード分離」を参照してください。
Coherence*WebをEARスコープ設定クラスタ・ノードで使用する手順は次のとおりです。
EARファイルの各WARにあるWEB-INF/lib
ディレクトリにcoherence.jar
とcoherence-web.jar
のファイルをコピーします。
例3-2
に示すように、glassfish-web.xml
ファイルでセッション持続タイプをcoherence-webに設定します。
EARファイルの各WARファイルにある/
WEB-INF/classes/
ディレクトリに、セッション・キャッシュ構成ファイルdefault-session-cache-config.xml
をコピーします。
Coherence*WebをWARスコープ設定のクラスタ・ノードで使用する手順は次のとおりです。
GlassFish Server上にデプロイする各Webアプリケーションの/WEB-INF/lib/
ディレクトリに coherence.jar
とcoherence-web.jar
のファイルをコピーします。
glassfish-web.xml
ファイルでセッション持続タイプをcoherence-web
に設定します。例3-2を参照してください。
GlassFish Serverにデプロイする各Webアプリケーションの/
WEB-INF/classes/
ディレクトリに、セッション・キャッシュ構成ファイルdefault-session-cache-config.xml
をコピーします。
このパッケージ化は、デプロイした各WARファイルでCoherenceノードがクラスタに作成されることを意味します。複数のWARファイルをEARファイルにパッケージ化する場合、各WARファイルでCoherenceノードがクラスタに作成されます。