この章では、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インスタンスがアプリケーションの実行に特化されるアプリケーション層とは別個のものです。
ActiveCacheでCoherence*Webを使用することにより、WebLogic Server上で実行されているアプリケーションに対して、CoherenceベースのHTTPセッション状態の永続性を与えることができます。Coherence*Webは、様々なWebアプリケーション、ドメインおよび異機種アプリケーション・サーバーにわたるHTTPセッションの共有と管理を可能にします。セッション・データはアプリケーション・サーバー外部のデータ・キャッシュに格納できるため、アプリケーション・サーバーのヒープ領域を解放し、セッション・データを失うことなくサーバーを再起動できます。
CoherenceおよびCoherence*Webは、WebLogic Server 11gR1(10.3.3)のデフォルトのインストールに含まれています。システム上にWebLogic Server 11gR1(10.3.3)が存在しない場合は、次の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 11gR1(10.3.3)のインストールでは、coherence_3.5
ディレクトリにCoherence 3.5もインストールされます。この例を実行するには、サーバー起動ファイルおよびクラスパスが、すでにインストールされているCoherence 3.6ファイルを引き続き指していることを確認します。また、この例の後半でファイルをデプロイする際、3.6バージョンをデプロイしていることを確認してください。
Coherenceキャッシュ・サーバーを起動します。例11-1に、キャッシュ・サーバーを起動するサンプル・スクリプトを示します。この例で、tangosol.coherence.clusterport=7777
はCoherenceクラスタのデフォルトのマルチキャスト・リスニング・ポート、tangosol.coherence.clusteraddress=231.1.1.1
はデフォルトのマルチキャスト・リスニング・アドレスです。
例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-spi.war; set COH_OPTS=%COH_OPTS% -Dtangosol.coherence.management.remote=true -Dtangosol.coherence.cacheconfig=/WEB-INF/classes/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
この例ではCoherenceクラスタが必要です。
Oracle WebLogic構成ウィザード(「スタート」→「すべてのプログラム」→「Oracle WebLogic」→「WebLogic Server 11gR1」→「ツール」→構成ウィザードを実行し、test_domain
というWebLogic Serverドメインを作成します。
ウィザードを終了する前に、「管理サーバーの起動」チェック・ボックスを選択し、「完了」をクリックします。構成ウィザードにより自動的に管理サーバーが起動されます。
WebLogic Server管理コンソールを起動します。
ブラウザから、http://
hostname
:7001/console
を使用してOracle WebLogic Server管理コンソールにログインします。コンソールが起動し、ドメインのホーム・ページが表示されます。
WebLogic Serverインスタンスをホストするマシンを作成します。
「ドメイン構造」ウィンドウから、「環境」→「マシン」を選択します。「新規」をクリックします。「新しいマシンの作成」ページが表示されます。マシンの名前(この場合はTest)を入力し、「OK」をクリックします。
「マシンのサマリー」ページは、図11-2のようになります。
マシンに関連付けられる2つのサーバー・インスタンスを作成します。後半の手順で、アプリケーションがこれらのサーバーにデプロイされます。
「マシンのサマリー」ページでマシンの名前をクリックし、「<machine>の設定」ページを開きます。「サーバー」タブ→「追加」をクリックし、サーバーを作成します。
「マシンにサーバーを追加」ページで「新しいサーバーを作成してこのマシンに関連付けます。」を選択し、「次へ」をクリックします。
「マシンにサーバーを追加」ページでサーバーの詳細を指定します。
「サーバー名」としてServerA
を、「サーバー・リスニング・ポート」として8081
を入力します。「サーバー・リスニング・アドレス」に適切な値を入力します。「終了」をクリックします。
「<machine>の設定」ページに戻ったら、前の3つの手順を繰り返し、2番目のサーバーを作成します。
「サーバー名」としてServerB
を、「サーバー・リスニング・ポート」として8082
を入力します。「サーバー・リスニング・アドレス」に適切な値を入力します。「終了」をクリックします。
「ドメイン構造」メニューで「環境」を開き、「サーバー」をクリックします。
「サーバーのサマリー」ページが、図11-4のように表示されます。
Coherenceクラスタを作成します。
「ドメイン構造」ウィンドウで「サービス」→「Coherenceクラスタ」をクリックします。「Coherenceクラスタのサマリー」ページで、「新規」をクリックします。「Coherenceクラスタ構成の作成」ページで、「名前」フィールドにCoherenceCluster
と入力し、「次へ」をクリックします。
「ユニキャスト・リスニング・ポート」フィールドに、8085
などの値を入力します。その他の値は変更せずに、「次へ」をクリックします。
「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
ファイルをデプロイする手順は次のとおりです。
「ドメイン構造」メニューで「デプロイメント」をクリックします。「デプロイメントのサマリー」ページが表示されます。
「インストール」をクリックします。「アプリケーション・インストール・アシスタント」画面が表示されます。
「アプリケーション・インストール・アシスタント」を使用して、ライブラリとしてcoherence-web-spi.war
をServerA
およびServerB
にデプロイします。
coherence-web-spi.war
ファイルを見つけ、選択します。これは、Coherenceインストールのcoherence\lib
ディレクトリにあります。「次へ」をクリックします。
「ターゲット指定スタイルの選択」ページで、「このデプロイメントをライブラリとしてインストールする」が選択されていることを確認します。「次へ」をクリックします。
デプロイメント・ターゲットとしてServerA
およびServerB
を選択します(coherence-web-spi.war
はAdminServer
にはデプロイしません)。「次へ」をクリックします。
「オプション設定」ページで、「ソースのアクセス可能性」セクションの「すべてのターゲットにこのアプリケーションをコピーする」オプションを選択します。
「終了」をクリックすると、「アプリケーション・インストール・アシスタント」の残りの手順をスキップできます。アプリケーションがデプロイされると、「デプロイメントのサマリー」ページが表示されます。
手順1〜3を繰り返し、active-cache-1.0.jar
をServerA
およびServerB
にデプロイします(active-cache-1.0.jar
はAdminServer
にはデプロイしません)。
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.xml
という名前で/WEB-INF
ディレクトリに保存します。
<?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.jar
をCoherence 3.6インストールのcoherence\lib
ディレクトリからWEB-INF/lib
ディレクトリにコピーします)。
カウンタJSPの次のコードをテキスト・ファイルにコピーし、このファイルをcounter.jsp
という名前でWebアプリケーション・ディレクトリのルートに保存します。
<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管理コンソールの「ドメイン構造」メニューで「デプロイメント」をクリックし、「デプロイメントのサマリー」ページを開きます。
「インストール」をクリックします。「アプリケーション・インストール・アシスタント」画面が表示されます。
「アプリケーション・インストール・アシスタント」を使用して、counter.war
をServerA
およびServerB
にデプロイします。「オプション設定」ページで、「ソースのアクセス可能性」セクションの「すべてのターゲットにこのアプリケーションをコピーする」オプションを選択します。
アプリケーションがデプロイされると、「デプロイメントのサマリー」ページが表示されます。図11-13に、デプロイされた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-14に、サーバーを起動した後のデプロイメントの表を示します。
例を検証する手順は次のとおりです。
ブラウザを開き、次のURLを使用してServerA
カウンタ・インスタンスにアクセスします。
http://
host
:8081/counter/counter.jsp
カウンタ・ページが表示され、次のようにカウンタが1に設定されます。
新しいブラウザ(または新しいブラウザ・タブ)で、次のURLを使用してServerB
カウンタ・インスタンスにアクセスします。
http://
host
:8082/counter/counter.jsp
カウンタ・ページが表示され、セッション・データに基づいてカウンタが2に増分されます。
ページを更新すると、カウンタは3に増分されます。元のブラウザ(またはブラウザ・タブ)に戻り、インスタンスを更新すると、カウンタは4を示します。