この章では、WebLogic Serverインスタンス間でデプロイされたWebアプリケーション・インスタンスのセッション情報をキャッシュする方法を説明します。
この章の内容は、次のとおりです。
WebLogic Serverには、デプロイされたアプリケーションでCoherenceデータ・キャッシュを使用し、セッション管理のためのCoherence*Webおよびオブジェクト・ツー・リレーショナル永続フレームワークのためのTopLink Gridをシームレスに統合する機能が組み込まれています。これらの機能はまとめて、ActiveCacheと呼ばれます。
ActiveCacheは、WebLogic Serverで実行されるアプリケーションによって利用され、Coherenceデータ・クラスタ内のすべてのサーバーでアプリケーションのデータを利用できるようにするレプリケーション・キャッシュ・サービスと分散キャッシュ・サービスを提供します。アプリケーションでは、リソース・インジェクション、またはコンポーネントベースのJNDIルックアップを介して、データ・キャッシュへの直接アクセスを取得できます。WebLogic Server管理コンソールおよびWLSTを使用して、Coherenceクラスタを表示、監視、作成および構成できます。
WebLogic ServerインスタンスでActiveCacheを使用すると、アプリケーション・データのキャッシュとレプリケートされたセッション状態の格納専用のデータ層を作成できます。これは、WebLogic Serverインスタンスがアプリケーションの実行専用に使用するアプリケーション層とは分離されます。
Coherence*WebをActiveCacheとともに使用することによって、WebLogic Server上で実行されるアプリケーションにCoherenceベースのHTTPセッション状態の永続性を提供できます。Coherence*Webは、異なる複数のWebアプリケーション、ドメインおよび異機種のアプリケーション・サーバー間におけるHTTPセッション共有および管理を実現します。セッション・データは、アプリケーション・サーバー外のデータ・キャッシュに格納できるため、アプリケーション・サーバーのヒープ・スペースを解放し、セッション・データを消失させずにサーバーを再起動できます。
CoherenceおよびCoherence*Webは、WebLogic Server 11gリリース1(10.3.4)のデフォルト・インストールに含まれています。システムにWebLogic Server 11gリリース1(10.3.4)をまだ導入していない場合は、次のURLで入手できます。
http://www.oracle.com/technology/software/products/middleware/index.html
Oracle WebLogic Server、CoherenceおよびCoherence*Webの統合の詳細は、ActiveCacheの使用およびOracle Coherence*Webユーザーズ・ガイドを参照してください。
次の例は、ActiveCacheを使用して、WebLogic Serverインスタンス間にデプロイされるWebアプリケーション・インスタンスのセッション情報をキャッシュする方法を示しています。これを行うには、Webアプリケーションを作成して、2つのサーバー・インスタンスにデプロイします。このアプリケーションは、現在のカウントをセッション属性として格納する簡単なカウンタです。Coherence*Webによって、両方のサーバー・インスタンス間の属性のシリアライズとレプリケートが自動実行されます。各アプリケーション・インスタンスへのアクセスにはブラウザが使用され、インスタンス間で同じセッション属性が使用されていることが示されます。
デフォルトでは、WebLogic Server 11gリリース1(10.3.4)のインストールによって、coherence_3.6フォルダにCoherence 3.6がインストールされます。このサンプルを完成するには、サーバーの起動ファイルとクラス・パスが、すでにインストールされているCoherence 3.7ファイルをポイントし続けていることを確認します。また、このサンプルの後の手順でファイル(coherence.jar、coherence-web-spi.warなど)をデプロイする際にも、リリース3.7バージョンがデプロイされることを確認します。
Coherenceキャッシュ・サーバーを起動します。例11-1は、キャッシュ・サーバーを起動するサンプル・スクリプトを示しています。このサンプルで、tangosol.coherence.clusterport=7777はCoherenceクラスタのデフォルトのマルチキャスト・リスニング・ポートで、tangosol.coherence.clusteraddress=231.1.1.1は、デフォルトのマルチキャスト・リスナー・アドレスです。
| リリース3.7.1用の新規: session-cache-config.xmlファイルは、coherence-web-spi.warファイルからcoherence-web.jarファイルに移動しています。coherence-web.jarファイルはcoherence\libディレクトリにあります。 | 
例11-1 キャッシュ・サーバーを起動するスクリプト
setlocal set COHERENCE_HOME=c:\oracle\product\coherence set COH_OPTS=%COH_OPTS% -server -cp %COHERENCE_HOME%\lib\coherence.jar;%COHERENCE_HOME%\lib\coherence-web.jar; set COH_OPTS=%COH_OPTS% -Dtangosol.coherence.management.remote=true -Dtangosol.coherence.cacheconfig=session-cache-config.xml -Dtangosol.coherence.distributed.localstorage=true -Dtangosol.coherence.clusterport=7777 -Dtangosol.coherence.clusteraddress=231.1.1.1 -Dtangosol.coherence.session.localstorage=true java %COH_OPTS% -Xms512m -Xmx512m -XX:MaxPermSize=256m com.tangosol.net.DefaultCacheServer :exit
| 注意:WebLogic管理コンソールを使用してCoherenceキャッシュの定義と起動を行う場合は、キャッシュ構成ファイルの場所を指定し、「サーバーの起動」タブの「引数」フィールドで分散ローカル記憶域とセッションローカル記憶域をtrueに設定する必要があります。たとえば、次のように指定します。 
 | 
Coherenceクラスタを構成して起動するには:
Oracle WebLogic構成ウィザード(「スタート」→「すべてのプログラム」→「Oracle WebLogic」→「WebLogic Server 11gR1」→「ツール」→構成ウィザード)を実行して、test_domainという新規WebLogic Serverドメインを作成します。
ウィザードを終了する前に、「管理サーバーの起動」チェック・ボックスを選択し、「完了」をクリックします。構成ウィザードによって、管理サーバーが自動的に起動します。
WebLogic Server 管理コンソールを起動します。
ブラウザから、URL(http://hostname:7001/console)を使用して、Oracle WebLogic Server管理コンソールにログインします。コンソールが起動し、ドメインのホーム・ページが表示されます。
WebLogic Serverインスタンスをホストするマシンを作成するには:
「ドメイン構造」ウィンドウから、「環境」→「マシン」を選択します。「新規」をクリックします。「新しいマシンの作成」ページが表示されます。マシンの名前(この例ではTest)を入力して、「次」をクリックします。次のページで「終了」をクリックします。図11-1は、「新しいマシンの作成」ページを示しています。
「マシンのサマリー」ページは、図11-2のようになります。
マシンに関連付ける2つのサーバー・インスタンスを作成します。これらのサーバーには後の手順でアプリケーションがデプロイされます。
サーバー・インスタンスを作成するには:
「マシンのサマリー」ページで、マシンの名前をクリックして、「マシンの設定」ページを開きます。「サーバー」タブ→「追加」をクリックして、サーバーを作成します。
「マシンにサーバーを追加」ページで「新しいサーバーを作成してこのマシンに関連付けます。」を選択し、「次」をクリックします。
「新しいサーバーの作成」ページでサーバーの詳細を指定します。
「サーバー名」にServerAを、「サーバー・リスニング・ポート」に8081を入力します。「サーバー・リスニング・アドレス」に適切な値を入力します。図11-3を参照してください。「終了」をクリックします。
「マシンの設定」ページに戻ったら、「追加」をクリックして、前述の3つの手順を繰り返し、2番目のサーバーを作成します。
「サーバー名」にServerBを、「サーバー・リスニング・ポート」に8082を入力します。「サーバー・リスニング・アドレス」に適切な値を入力します。「終了」をクリックします。
「ドメイン構造」メニューの「環境」を開き、「サーバー」をクリックします。
「サーバーのサマリー」ページは、図11-4のようになります。
1つのCoherenceクラスタは、通信を可能にするグループ・アドレスを共有するCoherenceノードのグループです。Coherenceクラスタは、アプリケーション、モジュール、またはアプリケーション・サーバー(WebLogic Serverインスタンスまたはキャッシュ・サーバー)によって形成されるノードで構成されます。
Coherenceクラスタを作成するには:
ドメインの「構造ウィンドウ」で「環境」をクリックして、「Coherenceクラスタ」をクリックします。「Coherenceクラスタのサマリー」ページで、「新規」をクリックします。「Coherenceクラスタ構成の作成」ウィザードの「Coherenceクラスタのプロパティ」ページで、「名前」フィールドにCoherenceClusterを入力して、「次」をクリックします。
図11-5は、「Coherenceクラスタ構成の作成」ページを示しています。
「ユニキャスト・リスニング・ポート」フィールドに、8085などの値を入力します。他の値は変更しないで、「次」をクリックします。
「Coherenceクラスタ構成の作成」ウィザードの「Coherenceクラスタ・ターゲット」ページで、ターゲットとしてServerAとServerBを選択します。「終了」をクリックします。
「Coherenceクラスタのサマリー」ページは、図11-8のようになります。
coherence.jarファイルに加え、Coherenceでは、デプロイ可能な共有ライブラリcoherence-web-spi.warが提供されます。これには、WebLogic ServerのHTTPセッション管理インタフェースへのネイティブ・プラグインが格納されています。Coherenceは、WebLogic ServerとCoherenceとの相互作用を実現するクラスが格納されたactive-cache-1.0.jarファイルも提供します。
このサンプルでは、coherence.jarをデプロイする必要はありません。これは、後の手順でアプリケーションとバンドルされます。
coherence-web-spi.warファイルとactive-cache-1.0.jarファイルをデプロイするには:
「ドメイン構造」メニューから、「デプロイメント」をクリックします。「デプロイメントのサマリー」ページが表示されます。
「インストール」をクリックします。「アプリケーション・インストール・アシスタント」ウィンドウが表示されます。
「アプリケーション・インストール・アシスタント」を使用して、ServerAおよびServerBにcoherence-web-spi.warをライブラリとしてデプロイします。
図11-9に示されるように、coherence-web-spi.warファイルを探して選択します。WARファイルは、Coherenceインストールのcoherence\libフォルダにあります。「次」をクリックします。
「ターゲット指定スタイルの選択」ページで、図11-10に示されるように「このデプロイメントをライブラリとしてインストールする」が選択されていることを確認します。「次」をクリックします。
図11-11に示されているように、デプロイメントのターゲットとしてServerAとServerBを選択します(coherence-web-spi.warをAdminServerにはデプロイしないでください)。「次」をクリックします。
「オプション設定」ページで、「ソースのアクセス可能性」セクションの「すべてのターゲットにこのアプリケーションをコピーする」オプションを選択します。
「アプリケーション・インストール・アシスタント」の残りのステップは、「終了」をクリックして省略できます。アプリケーションのデプロイ後に「デプロイメントのサマリー」ページが表示されます。
手順1から3を繰り返して、active-cache-1.0.jarをServerAとServerBにデプロイします(active-cache-1.0.jarをAdminServerにはデプロイしないでください)。
「オプション設定」ページに達したら、「デプロイメントを次の場所からアクセス可能にする」オプションを選択します。これは、nostage WLSTオプションを模倣します。
active-cache-1.0.jarファイルへのパスを入力します。このファイルがWebLogic Serverインストールに組み込まれます。WebLogic ServerがC:\oracle\productにインストールされている場合、このファイルはC:\oracle\product\wls1033\wlserver_10.3\common\deployable-librariesフォルダにあります。
カウンタWebアプリケーションは、JSPとして実装される簡単なカウンタです。このカウンタはHTTPセッション属性として格納され、ページへのアクセスごとにカウントが増えます。
カウンタWebアプリケーションを作成するには:
次の手順で標準のWebアプリケーション・フォルダを作成します。
/ /WEB-INF
次のコードをテキスト・ファイルにコピーして、/WEB-INFフォルダにweb.xmlと名前を付けて保存します。
<?xml version = '1.0' encoding = 'windows-1252'?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" xmlns="http://java.sun.com/xml/ns/j2ee" version="2.5"> <description>Empty web.xml file for Web Application</description> </web-app>
/WEB-INFフォルダにweblogic.xmlファイルを作成します。
coherence-web-spi.warファイルのライブラリ参照を追加します。
coherence-cluster-refスタンザでCoherenceクラスタを参照します。
例11-2は、サンプルのweblogic.xmlファイルを示しています。
例11-2 サンプルweblogic.xmlファイル
<weblogic-web-app xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.oracle.com/weblogic/weblogic-web-app http://www.oracle.com/technology/weblogic/weblogic-web-app/1.1/weblogic-web-app.xsd">
      <library-ref>
           <library-name>coherence-web-spi</library-name>
      </library-ref>
     <coherence-cluster-ref>
        <coherence-cluster-name>CoherenceCluster</coherence-cluster-name>
     </coherence-cluster-ref> 
</weblogic-web-app>
coherence.jarファイルをアプリケーションとバンドルします。Coherence 3.7インストールのcoherence\libフォルダからWEB-INF/libフォルダにcoherence.jarをコピーします。
counter JSPの次のコードをテキスト・ファイルにコピーして、Webアプリケーション・フォルダのルートにcounter.jspと名前を付けて保存します。
<html>
    <body>
<h3>
      Counter :
      <%
         Integer counter = new Integer(1);
         HttpSession httpsession = request.getSession(true);
         if (httpsession.isNew()) {
                httpsession.setAttribute("count", counter);
                out.println(counter);
         } else {
                int count = ((Integer) httpsession.getAttribute("count")).intValue();
                httpsession.setAttribute("count", new Integer(++count));
                out.println(count);
         }
      %>
      </h3>
 
    </body>
</html>
META-INFフォルダにmanifest.mfファイルを作成します。active-cache JARファイルの参照を追加します。例11-3は、manifest.mfファイルのサンプルを示しています。
Webアプリケーション・フォルダの構成は、次のように表示されます。
/ /counter.jsp /META-INF/manifest.mf /WEB-INF/web.xml /WEB-INF/weblogic.xml /WEB-INF/lib/coherence.jar
Webアプリケーション・フォルダにZIPまたはJAR処理を行い、counter.warと名前を付けてファイルを保存します。
counter.warアプリケーションをデプロイするには:
Oracle WebLogic Server管理コンソールの「ドメイン構造」メニューで、「デプロイメント」をクリックして「デプロイメントのサマリー」ページを開きます。
「インストール」をクリックします。「アプリケーション・インストール・アシスタント」ウィザードが開きます。
「アプリケーション・インストール・アシスタント」を使用して、ServerAおよびServerBにcounter.warをデプロイします。「オプション設定」ページで、「ソースのアクセス可能性」セクションの「すべてのターゲットにこのアプリケーションをコピーする」オプションを選択します。
アプリケーションのデプロイ後に「デプロイメントのサマリー」ページが表示されます。図11-14は、active-cache.jar、coherence-web-spi.warおよびcounter.warのファイルがデプロイされたページを示しています。
ノード・マネージャを起動し、その後WebLogic Server管理コンソールからWebLogic Serverインスタンスを起動します。ノード・マネージャは、Oracle WebLogic Serverとは別のプロセスとして稼働するJavaユーティリティで、管理サーバーを基準とした場所に関係なく、管理対象サーバーに対する共通操作の実行を可能にします。
ノード・マネージャを起動するには、「スタート」→「すべてのプログラム」→「Oracle WebLogic」→「WebLogic Server 11gR1」→「ツール」→「ノード・マネージャ」と移動します。
ドメインの「構造ウィンドウ」で「環境」→「サーバー」をクリックします。WebLogic Server管理コンソールの「サーバーのサマリー」ページから、「制御」タブをクリックして、両方のサーバー・インスタンスを起動します。
図11-15は、サーバー起動後のデプロイメント表を示しています。
図11-15 デプロイされたアプリケーションとライブラリが表示された「デプロイメント」ウィンドウ

サンプルを検証するには:
ブラウザを開き、次のURLを使用してServerAのカウンタ・インスタンスにアクセスします。
http://host:8081/counter/counter.jsp
図11-16に示されるように、カウンタ・ページが表示され、カウンタが1に設定されています。
新しいブラウザ(または新しいブラウザのタブ)で、次のURLを使用してServerBのカウンタ・インスタンスにアクセスします。
http://host:8082/counter/counter.jsp
図11-17に示されるように、カウンタ・ページが表示され、セッション・データに基づいてカウンタが2に増えています。
ページをリフレッシュすると、カウンタが3に増えます。元のブラウザ(またはブラウザ・タブ)に戻り、インスタンスをリフレッシュすると、カウンタに4が表示されます。