ヘッダーをスキップ
Oracle® Fusion Middleware Oracle Coherence*WebでのHTTPセッション・マネージメントの管理
12c (12.1.2)
B70746-02
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次

前
 
次
 

3 GlassFish ServerでのCoherence*Webの使用方法

この章では、GlassFish Serverで使用するために、Coherence*Web、セッション状態の永続性および管理モジュールを構成してデプロイする方法について説明します。Coherence*Webをこのアプリケーション・サーバーで使用可能にする機能は、ActiveCache for GlassFishに含まれています。

この章には次の項が含まれます:

3.1 GlassFish Serverの概要

Oracle GlassFish Serverは、軽量型で、柔軟性と拡張可能性に優れたJava EE 6プラットフォームを提供します。これにより、フットプリントが小さく、完全に装備されたJava EEアプリケーション・サーバーが実現されます。このアプリケーション・サーバーは、商用デプロイメント用に完全にサポートされており、スタンドアロン製品として利用できます。Oracle GlassFish Serverは、軽量型インフラストラクチャおよびJava Enterprise Editionの最新の実装を必要とするアプリケーションに最適です。この章では、GlassFish Server上で実行しているアプリケーションからCoherence*Webを使用できるように設定およびデプロイする方法について説明します。

3.2 ActiveCache for GlassFishの概要

Oracle CoherenceとOracle GlassFish Serverの現在のリリースでは、ActiveCache for GlassFishと呼ばれるCoherence*Web機能が提供されています。ActiveCache for GlassFishを使用すると、Oracle GlassFish ServerにデプロイされたWebアプリケーションでCoherence*Web機能を利用できます。旧リリースでは、セッション記憶域にCoherence*Webを使用するには、Coherence*Web WebInstallerでアプリケーションを事前処理する必要がありました。ActiveCache for GlassFishを使用することにより、GlassFish 3.1アプリケーションでは、WebInstallerの事前処理手順は不要になります。

ActiveCache for GlassFish機能は、coherence\libフォルダにあるcoherence-web.jarファイルで提供されます。ActiveCache for GlassFishで使用されるCoherenceキャッシュの構成とサービスは、default-session-cache-config.xmlファイルに定義されており、このファイルはcoherence-web.jarファイル内にあります。default-session-cache-config.xmlファイルで定義されているデフォルト・キャッシュ構成とサービス構成は、ほとんどすべてのWebアプリケーションに対応可能です。

Coherence*WebではCoherenceキャッシュを使用してセッション・データを格納するので、coherence.jarファイルはWebアプリケーションのクラス・ローダーからも使用できる必要があります。EARスコープ設定やWARスコープ設定のクラスタ・ノードでActiveCache for GlassFishを実行するように構成する方法の詳細は、「クラスタ・ノードの構成」を参照してください。

デフォルトでは、GlassFish Server上で稼働するCoherenceノードは、記憶域を無効化した状態で構成されます。Webアプリケーションを動作させるには、別のCoherenceキャッシュ・サーバーが稼働している必要があります。

Coherence*Webには、セッションの同時アクセスを制御するためのセッション・ロック・モードがいくつかあります。ActiveCache for GlassFishでは、最後の書込みを優先するロックがデフォルトで採用されます。これにより、単一のJVMまたは複数のJVMにある複数のスレッドからセッションに同時アクセスできます。ただし、セッションを同時に変更できません。ロック・モードの詳細は、「セッション・ロック・モード」を参照してください。

スプリット・セッション・モデル(SplitHttpSessionModel)では、小さなセッション属性が単一のキャッシュ・エントリとして格納され、大きな属性が個別のキャッシュ・エントリとして格納されますが、これは、ActiveCache for GlassFishで使用されるデフォルトのセッション・モデルです。詳細は、「セッション・モデル」を参照してください。

セッション・データをCoherenceデータ・グリッドに格納することで、GlassFish Serverでヒープ領域を利用できるようになります。セッション・データをGlassFish Serverの外部に格納することにより、セッション・データを失わずにWebアプリケーションとサーバーを再起動できます。また、これによって別々のWebアプリケーションでセッションを共有できます。EARスコープ設定かWARスコープ設定のクラスタ・ノードにあるGlassFish Server上でCoherence*Webを実行できます。アプリケーション・サーバー・スコープはサポートされていません。

3.3 GlassFish ServerでのCoherence*Webの構成とデプロイ: 主な手順

次の手順は、GlassFish Server上で実行しているアプリケーションでCoherence*Webを使用するためにデプロイメントを準備する方法を示しています。

  1. Oracle Coherenceをファイル・システムにダウンロードします。「Oracle Coherenceのダウンロード」を参照してください。

  2. glassfish-web.xmlファイルでWebアプリケーションのセッション持続タイプをcoherence-webに設定します。「セッション持続タイプの設定」を参照してください。

  3. (オプション)デフォルトのCoherence*Webキャッシュ構成やクラスタ構成をオーバーライドする必要がある場合、default-session-cache-config.xmlファイルを編集します。「デフォルトのCoherence*Webキャッシュ構成またはクラスタ構成のオーバーライド」を参照してください。

  4. coherence-web.jarファイルをWebアプリケーションで利用できるようにします。「ActiveCache for GlassFishとセッション・キャッシュ・ファイルをアプリケーションにコピーする方法」を参照してください。

  5. web.xmlファイルを編集して、Webアプリケーションをサーバー・クラスタで利用できるようにします。「Webアプリケーションを配布可能にする方法」を参照してください。

  6. (オプション)アプリケーションがCoherence*Web用に高度な構成を必要とする場合は、WARデプロイメントのweb.xmlファイルを編集します。「Coherence*Webの構成」を参照してください。

  7. (テストの場合はオプション、本番の場合は強く推奨)GlassFish Serverを実行しているJVMとは別のJVMでキャッシュ・サーバー層を起動します。「キャッシュ・サーバーの起動」を参照してください。

  8. アプリケーションをパッケージ化します。GlassFish ServerにおけるEARスコープ設定やWARスコープ設定のクラスタ・ノードに対してCoherence*Webを構成できます。「クラスタ・ノードの構成」を参照してください。

3.3.1 Oracle Coherenceのダウンロード

Coherence*Webをサポートしているすべてのファイルは、ActiveCache for GlassFishを含めて、Coherenceディストリビューションに付属しています。最新リリースのOracle Coherenceは次のURLで入手できます。

http://www.oracle.com/technetwork/middleware/coherence/overview/index.html

3.3.2 セッション持続タイプの設定

WebアプリケーションのWEB-INFディレクトリのglassfish-web.xmlファイルを作成するか編集します。Webアプリケーションのセッション持続タイプをcoherence-webに設定します。次に例を示します。

例3-1 Coherence*Web用のglassfish-web.xmlファイルの構成

<glassfish-web-app> 
   <session-config> 
       <session-manager persistence-type="coherence-web" /> 
   </session-config> 
</glassfish-web-app>

3.3.3 デフォルトの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ディレクトリに配置する必要があります。

カスタム・セッション・キャッシュ構成ファイル名の指定方法の詳細は、「セッション・キャッシュ構成ファイル名のカスタマイズ」を参照してください。

3.3.4 ActiveCache for GlassFishとセッション・キャッシュ・ファイルをアプリケーションにコピーする方法

coherence-web.jarファイルは、ActiveCache for GlassFishの機能を提供します。GlassFish Serverで実行するアプリケーションからcoherence-web.jarファイルを利用できるようにする必要があります。

GlassFish Server上にデプロイする各Webアプリケーションの/WEB-INF/lib/ディレクトリにcoherence-web.jarファイルをコピーします。

3.3.5 Webアプリケーションを配布可能にする方法

Webアプリケーションを、サーバー・クラスタなどの分散環境で実行できるように構成する必要があります。<distributable/>要素をWebアプリケーションのweb.xmlデプロイメント・ディスクリプタに追加します。<distributable/>要素は、ルート<web-app>要素の子です。web.xmlファイルは、WebアプリケーションのWEB-INFディレクトリにあります。

3.3.6 Coherence*Webの構成

ActiveCache for GlassFishには、ほとんどのWebアプリケーションに対応するデフォルトのCoherence*Web構成が用意されています。web.xmlファイルの<context-param>要素を使用してCoherence*Web構成を定義します。web.xmlファイルに<context-params>要素を追加するか編集することで、デフォルト値をオーバーライドできます。


注意:

Webアプリケーション起動後にCoherence*Web構成を変更した場合、Webアプリケーションを再起動する必要があります。動的に更新可能な構成オプションはCoherence*Webにありません。


表3-1に、ActiveCache for GlassFishでCoherence*Web用に用意されているデフォルト値を示します。これらのパラメータの詳細は、付録A「Coherence*Webコンテキスト・パラメータ」を参照してください。

表3-1 ActiveCache for GlassFishに用意されているデフォルトのコンテキスト・パラメータ値

パラメータ名 説明およびデフォルト値

coherence-application-name

デフォルトは、「ServletContextパス+ServletContext」です。

Webアプリケーション名を表すための、一貫性のある、一意の文字列です。

coherence-cluster-owned

デフォルトはfalseです。

Webアプリケーション起動時にすべてのCoherenceノードが起動するため、Webアプリケーション停止時にもCoherenceノードを停止する必要があります。

coherence-reaperdaemon-assume-locality

デフォルトはfalseです。

セッションはスタンドアロンのキャッシュ・サーバーに格納できます。

coherence-scopecontroller-class

デフォルトはcom.tangosol.coherence.servlet.AbstractHttpSessionCollection$ApplicationScopeControllerです。

coherence-session-locking

デフォルトはfalseです。

セッション・ロックは、デフォルトでは無効になっています。この構成により最後の書込みを優先するポリシーが有効になります。

coherence-session-locking-mode

デフォルトはnoneです。

セッション・ロックは、デフォルトでは無効になっています。この構成により最後の書込みを優先するポリシーが有効になります。

coherence-sessioncollection-class

デフォルトはcom.tangosol.coherence.servlet.SplitHttpSessionCollectionです。

SplitHttpSessionCollectionは、推奨されるデフォルト・モデルです。


GlassFish ServerでセッションCookieの生成と解析が行われるため、セッションCookieを構成するCoherence*Webコンテキスト・パラメータは使用されません。サーブレットのコンテキストをクラスタ化できるようにCoherence*Webを構成できる場合でも、ActiveCache for GlassFishではこの機能はサポートされません。

ActiveCache for GlassFishで使用する際に有効でないCoherence*Webコンテキスト・パラメータを表3-2に示します。これらのコンテキスト・パラメータが存在する場合、ActiveCache for GlassFishで警告ログが返されます。これらのパラメータの詳細は、付録A「Coherence*Webコンテキスト・パラメータ」を参照してください。

表3-2 GlassFish Serverで有効ではないCoherence*Webコンテキスト・パラメータ

パラメータ名 有効ではない理由

coherence-distributioncontroller-class

GlassFish Server用の値は、com.tangosol.coherence.servlet.glassfish31.GlassFishHybridControllerです。

coherence-preserve-attributes

GlassFish Serverは、セッションでシリアライズ不可能なユーザー・データをキャッシュします。

coherence-session-cookie-domain

GlassFish ServerによりセッションCookieの生成と解析が行われるため、このパラメータは有効ではありません。

coherence-session-cookie-max-age

GlassFish ServerによりセッションCookieの生成と解析が行われるため、このパラメータは有効ではありません。

coherence-session-cookie-name

GlassFish ServerによりセッションCookieの生成と解析が行われるため、このパラメータは有効ではありません。

coherence-session-cookie-path

GlassFish ServerによりセッションCookieの生成と解析が行われるため、このパラメータは有効ではありません。

coherence-session-cookies-enabled

GlassFish ServerによりセッションCookieの生成と解析が行われ、URLがセッションIDでエンコードされるため、このパラメータは有効ではありません。

coherence-eventlisteners

web.xmlに登録されているセッション・イベント・リスナーがActiveCache for GlassFishで自動的に登録されるため、このパラメータは有効ではありません。

coherence-servletcontext-clustered

ActiveCache for GlassFishのクラスタ化されたServletContextがCoherence*Webでサポートされていないため、このパラメータは有効ではありません。

coherence-session-id-length

GlassFish ServerによりセッションCookieの生成と解析が行われるため、このパラメータは有効ではありません。

coherence-session-urldecode-bycontainer

GlassFish ServerによりセッションCookieの生成と解析、およびURLのエンコードとデコードが行われるため、このパラメータは有効ではありません。

coherence-session-urlencode-enabled

GlassFish ServerによりセッションCookieの生成と解析が行われ、URLがセッションIDでエンコードされるため、このパラメータは有効ではありません。

coherence-session-urlencode-name

GlassFish ServerによりセッションCookieの生成と解析が行われ、URLがセッションIDでエンコードされるため、このパラメータは有効ではありません。


表3-3に、glassfish-web.xmlファイルの有効なセッション構成パラメータを示します。GlassFishによりセッションCookieが作成され、URLがサーブレットでエンコードされるため、これらは有効です。

表3-3 glassfish-web.xmlの有効なGlassFishセッション構成パラメータ

パラメータ名 有効である理由

session-config/cookie-properties/cookieComment

GlassFishによってセッションCookieが生成されます。

session-config/cookie-properties/cookieMaxAgeSeconds

GlassFishによってセッションCookieが生成されます。

session-config/cookie-properties/cookiePath

GlassFishによってセッションCookieが生成されます。

session-config/cookie-properties/cookieSecure

GlassFishによってセッションCookieが生成されます。

session-config/cookie-properties/cookieDomain

GlassFishによってセッションCookieが生成されます。

session-config/session-properties/enableCookies

GlassFish ServerによってセッションCookieが生成されます。

session-config/session-properties/enableURLRewriting

GlassFish ServerによってセッションCookieが生成されます。

session-config/session-manager/persistence-type

このパラメータをcoherence-webに設定して、Coherence*Webを有効にする必要があります。

session-config/session-manager/manager-properties/reap-interval-in-seconds

この値には、coherence-reaperdaemon-cycle-seconds Coherence*Web構成パラメータを設定します。GlassFish Serverのデフォルトは60秒です

session-config/session-properties/timeoutSeconds

この値には、coherence-session-expire-seconds Coherence*Web構成パラメータを設定します。web.xmlファイルにある同等パラメータがオーバーライドされます。


ActiveCache for GlassFishを使用する際にglassfish-web.xmlファイルで有効でない構成パラメータを表3-4に示します。これらのパラメータがglassfish-web.xmlファイルで構成されている場合は、無視されます。

表3-4 glassfish.web.xmlのCoherence*Webで有効ではないGlassFishコンテキスト・パラメータ

パラメータ名 有効ではない理由

session-config/session-manager/manager-properties/maxSessions

Coherence*Webによりセッション管理が制御されます。セッションを複数のアプリケーションで共有できるため、特定のアプリケーションに対してセッションの数は計算できません。

session-config/session-manager/manager-properties/ persistenceFrequency

Coherence*Webでは必ずセッション・データがリクエストの最後においてキャッシュにフラッシュされますが、非同期で行われる場合があります。

session-config/session-manager/manager-properties/sessionFilename

このパラメータは、fileセッション持続タイプにのみ関連します。

session-config/session-manager/store-properties/ directory

このパラメータは、fileセッション持続タイプにのみ関連します。

session-config/session-manager/store-properties/ persistenceScope

このパラメータは、GlassFish Server native replicatedセッション持続タイプにのみ関連します。


3.3.7 キャッシュ・サーバーの起動

Coherenceキャッシュ・サーバーは、すべてのキャッシュ・データを格納して管理します。これは、専用のJVM(アウトオブプロセス)内でも、GlassFish Serverインスタンス内(インプロセス)でも実行できます。Coherenceデータ・クラスタ内の上位ノード(最初のノード)は起動に数秒間かかることがあります。下位のノードで必要な起動時間は最小限です。

アウトオブプロセス・トポロジ(記憶域を無効化したGlassFish ServerインスタンスとスタンドアロンCoherenceキャッシュ・サーバー)を使用している場合は、最初にキャッシュ・サーバーを起動し、次にGlassFish Serverインスタンスを起動します。これにより、Coherenceを使用するアプリケーションの起動時間はわずか(ミリ秒単位)になります。Coherenceを使用する追加Webアプリケーションはどれも上位データ・メンバーにならず、そのため、それらがGlassFish Serverの起動に与える影響は最小限になります。

スタンドアロンCoherenceキャッシュ・サーバーの起動方法

  1. 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.jarcoherence.jarを含める必要があります。Coherence*Webの場合、default-session-cache-config.xmlファイルをキャッシュ構成ファイルとして使用します。これは、「ActiveCache for GlassFishとセッション・キャッシュ・ファイルをアプリケーションにコピーする方法」で入手したファイルです。キャッシュ・サーバーに対して定義されているキャッシュ構成は、同じCoherenceクラスタで実行されているアプリケーション・サーバーに対して定義されているキャッシュ構成と一致する必要があります。

    Coherence*Webで追加のCoherenceキャッシュを実行している場合は、default-session-cache-config.xmlファイルに格納されているセッション構成とキャッシュ構成情報(一般的にcoherence-cache-config.xmlファイルで定義)をマージする必要があります。キャッシュ構成とセッション構成は、GlassFish ServerとCoherenceキャッシュ・サーバーで一貫している必要があります。

    これらのファイルをマージする方法の詳細は、『Oracle Fusion Middleware Oracle Coherence統合ガイド』のCoherenceキャッシュとセッション情報のマージに関する項を参照してください。

  2. 前述の手順で説明したスクリプトを使用して、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>
...

3.3.8 クラスタ・ノードの構成

GlassFish Serverでは、EARスコープ設定やWARスコープ設定のクラスタ・ノードに対してのみCoherence*Webを構成できます。GlassFish Serverクラス・ローダーの動作仕様により、アプリケーション・サーバー・スコープ設定のクラスタ・ノードは構成できません。アプリケーション・サーバー・スコープ設定、EARスコープ設定またはWARスコープ設定のクラスタ・ノードの詳細は、「クラスタ・ノード分離」を参照してください。

3.3.8.1 EARスコープ設定クラスタ・ノードの構成

Coherence*WebをEARスコープ設定クラスタ・ノードで使用する手順は次のとおりです。

  1. EARファイルの各WARにあるWEB-INF/libディレクトリにcoherence.jarcoherence-web.jarのファイルをコピーします。

  2. 例3-2に示すように、glassfish-web.xmlファイルでセッション持続タイプをcoherence-webに設定します。

    例3-2 glassfish-web.xmlファイルにおける持続タイプの設定

    <glassfish-web-app>
       ...
       <session-config>
          <session-manager persistence-type="coherence-web"/> 
       </session-config> 
    ...
    </glassfish-web-app>   
    
  3. EARファイルの各WARファイルにある/WEB-INF/classes/ディレクトリに、セッション・キャッシュ構成ファイルdefault-session-cache-config.xmlをコピーします。

3.3.8.2 WARスコープ設定クラスタ・ノードの構成

Coherence*WebをWARスコープ設定のクラスタ・ノードで使用する手順は次のとおりです。

  1. GlassFish Server上にデプロイする各Webアプリケーションの/WEB-INF/lib/ディレクトリに coherence.jarcoherence-web.jarのファイルをコピーします。

  2. glassfish-web.xmlファイルでセッション持続タイプをcoherence-webに設定します。例3-2を参照してください。

  3. GlassFish Serverにデプロイする各Webアプリケーションの/WEB-INF/classes/ディレクトリに、セッション・キャッシュ構成ファイルdefault-session-cache-config.xmlをコピーします。

このパッケージ化は、デプロイした各WARファイルでCoherenceノードがクラスタに作成されることを意味します。複数のWARファイルをEARファイルにパッケージ化する場合、各WARファイルでCoherenceノードがクラスタに作成されます。