ヘッダーをスキップ
Oracle® Coherence Oracle Coherence*Webユーザーズ・ガイド
リリース3.7.1
B65029-01
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次
索引へ移動
索引

前
 
次
 

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

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

Coherence 3.7とOracle GlassFish Server 3.1以降には、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の事前処理手順は不要になります。


3.7.1における新規項目:

session-cache-config.xmlファイルは、coherence-web-spi.warファイルからcoherence-web.jarファイルに移動しました。coherence-web.jarファイルは、coherence\libフォルダにあります。

3.1 ActiveCache for GlassFishの概要

ActiveCache for GlassFish機能は、coherence\libフォルダにあるcoherence-web.jarファイルで提供されます。ActiveCache for GlassFishで使用されるCoherenceキャッシュの構成とサービスは、session-cache-config.xmlファイルに定義されており、このファイルは、coherence-web.jarファイル内にあります。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.2 GlassFish ServerでのCoherence*Webの構成とデプロイ: 主な手順

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

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

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

  3. (オプション)デフォルトのCoherence*Webキャッシュ構成やクラスタ構成をオーバーライドする必要がある場合、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.2.1 Oracle Coherenceのダウンロード

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

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

3.2.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.2.3 デフォルトのCoherence*Webキャッシュ構成またはクラスタ構成のオーバーライド

session-cache-config.xmlファイルには、Coherence*Webを使用してHTTPセッション管理を実装するセッション・キャッシュとサービスのデフォルト定義が記述されています。coherence-web.jarファイルには、ほとんどのWebアプリケーションに対応可能なデフォルトのsession-cache-config.xmlファイルが含まれています。必要に応じて、独自のカスタムsession-cache-config.xmlファイルとtangosol-coherence-override.xmlファイルを使用して、別のキャッシュ構成とクラスタ構成を指定できます。このファイルは、WebアプリケーションのWEB-INF/classesディレクトリに配置する必要があります。

3.2.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.2.5 Webアプリケーションを配布可能にする方法

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

3.2.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-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がOracle 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.2.7 キャッシュ・サーバーの起動

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

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

スタンドアロンCoherenceデータ・ノードを起動するには:

  1. Coherenceデータ・ノードを起動するためのスクリプトを作成します。

    キャッシュ・サーバーを起動するスクリプトの例を次に示します。この例では、Sun JVMの使用を前提としています。詳細は、『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=session-cache-config.xml 
    -Dtangosol.coherence.session.localstorage=true com.tangosol.net.DefaultCacheServer
    

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

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

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

  2. 前述の手順で説明したスクリプトを使用して、Coherenceデータ・ノードを1つ以上起動します。

記憶域を有効化したGlassFish Serverインスタンスまたは記憶域を無効化したGlassFish Serverインスタンスを起動する手順は次のとおりです。

デフォルトでは、Coherence*Webを使用可能なGlassFish Serverインスタンスは、記憶域を無効化した状態で起動します。

記憶域を有効化した状態でGlassFish Serverインスタンスを起動する方法は数種類あります。その一つとして、サーバー起動コマンドにコマンド・ライン・プロパティの-Dtangosol.coherence.session.localstorage=trueを含める方法があります。

別の方法としては、session-cache-config.xmlファイルでlocal-storage要素をtrueに設定することです。次に例を示します。

...
<local-storage system-property="tangosol.coherence.session.localstorage">true</local-storage>
...

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

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

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

3.2.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/ディレクトリに、セッション・キャッシュ構成ファイルsession-cache-config.xmlをコピーします。

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