この演習では、WebLogic Serverインスタンス間でデプロイされたWebアプリケーション・インスタンスのセッション情報をキャッシュする方法を説明します。ここでは、Coherenceデータ・キャッシュを使用し、セッション管理のためのCoherence*Webをシームレスに組み込むことができる管理対象サーバーの使用について取り上げます。
最新のWebLogic Serverリリースをまだ導入していない場合は、次のURLで入手できます。
http://www.oracle.com/technology/software/products/middleware/index.html
この章の内容は、次のとおりです。
WebLogic Serverには、デプロイされたアプリケーションでCoherenceデータ・キャッシュを使用し、セッション管理のためのCoherence*Webおよびオブジェクト・ツー・リレーショナル永続フレームワークのためのTopLink Gridをシームレスに統合する機能が組み込まれています。これらの機能はまとめてCoherenceコンテナと呼ばれます。
Coherenceコンテナについて
Coherenceコンテナは、WebLogic Serverで実行されるアプリケーションによって利用され、Coherenceデータ・クラスタ内のすべてのサーバーでアプリケーションのデータを利用できるようにするレプリケーション・キャッシュ・サービスと分散キャッシュ・サービスを提供します。アプリケーションでは、リソース・インジェクション、またはコンポーネントベースのJNDIルックアップを介して、データ・キャッシュへの直接アクセスを取得できます。WebLogic Server管理コンソールおよびWLSTを使用して、Coherenceクラスタを表示、モニター、作成および構成できます。
WebLogic ServerインスタンスでCoherenceコンテナを使用すると、アプリケーション・データのキャッシュとレプリケートされたセッション状態の格納専用のデータ層を作成できます。これは、WebLogic Serverインスタンスがアプリケーションの実行専用に使用するアプリケーション層とは分離されます。
Coherence*WebをCoherenceコンテナとともに使用することによって、アプリケーションにCoherenceベースのHTTPセッション状態の永続性を提供できます。Coherence*Webは、異なる複数のWebアプリケーション、ドメインおよび異機種のアプリケーション・サーバー間におけるHTTPセッション共有および管理を実現します。セッション・データは、アプリケーション・サーバー外のデータ・キャッシュに格納できるため、アプリケーション・サーバーのヒープ・スペースを解放し、セッション・データを消失させずにサーバーを再起動できます。
CoherenceおよびCoherence*Webは、WebLogic Serverのデフォルト・インストールに含まれています。CoherenceおよびCoherence*Webライブラリ(coherence.jar
およびcoherence-web.jar
)は、WebLogic Serverのシステム・クラスパスに含まれます。これらのライブラリは、適切なクラスローダーを使用してアプリケーション・クラスをWebLogic Serverにロードします。つまり、coherence.jar
またはcoherence-web.jar
ファイルをWebアプリケーションのクラスパスに含める必要はありません。
Oracle WebLogic Server、CoherenceおよびCoherence*Webの統合の詳細は、『Oracle Fusion Middleware Oracle Coherence*WebでのHTTPセッション・マネージメントの管理』を参照してください。Coherenceコンテナの詳細は、『Oracle Fusion Middleware Oracle WebLogic Server Oracle Coherenceアプリケーションの開発』を参照してください。
Coherenceクラスタについて
Coherenceクラスタは、WebLogic Serverクラスタとは異なります。これらは、異なるクラスタ・プロトコルを使用して、別々に構成されます。複数のWebLogic Serverクラスタを1つのCoherenceクラスタに関連付けることができ、WebLogic Serverドメインには1つのCoherenceクラスタのみを含めることができます。Coherenceクラスタ・メンバーとして構成される管理対象サーバーは、管理対象Coherenceサーバーとして参照されます。管理対象Coherenceサーバーは、1つのCoherenceクラスタに明示的に関連付けたり、Coherenceクラスタに関連付けられている1つのWebLogic Serverクラスタに関連付けることができます。管理対象Coherenceサーバーは通常、それぞれのタイプに基づいてデータを格納するデータ層、アプリケーションをホストするアプリケーション層および外部クライアントへのアクセスを許可するプロキシ層の各層に設定されます。
WebLogicサーバー環境のCoherenceクラスタの詳細は、Oracle WebLogic Serverのクラスタの管理のCoherenceクラスタの構成および管理に関する項を参照してください。
次の例は、WebLogic Serverインスタンス間にデプロイされるWebアプリケーション・インスタンスのセッション情報をCoherenceコンテナおよびCoherence*Webがキャッシュする方法を示しています。これを行うには、Webアプリケーションを作成して、Coherenceクラスタに属する2つのWebLogic Serverインスタンスにデプロイします。このアプリケーションは、現在のカウントをセッション属性として格納する簡単なカウンタです。Coherence*Webによって、両方のサーバー・インスタンス間の属性のシリアライズとレプリケートが自動実行されます。各アプリケーション・インスタンスへのアクセスにはブラウザが使用され、インスタンス間で同じセッション属性が使用されていることが示されます。
次の手順では、WebLogic Serverがデフォルトの場所であるC:\Oracle\Middleware\Oracle_Home
にインストールされていることを想定しています。
WebLogic Serverを構成および起動するには:
Oracle WebLogic構成ウィザードを実行して、新しいWebLogic Serverドメインを作成します。
「ドメインの作成」ページで、「新規拡張ドメインの作成(E)」オプションを選択します。「ドメインの場所」フィールドに、ドメイン名および場所としてC:\Oracle\Middleware\Oracle_Home\user_projects\domains\test_domain
と入力します。
「テンプレート」ページで、デフォルトの基本のWebLogic Serverドメインが選択されていることを確認します。
「管理者アカウント」ページで、ドメインのパスワードを入力します。
「ドメイン・モードおよびJDK」および「オプションの構成」ページで、各デフォルトを受け入れます。
「構成サマリー」 ページで、「作成」をクリックします。
最後の「構成に成功しました」ページで、「管理サーバーの起動」チェック・ボックスを選択して「完了」をクリックします。構成ウィザードによって、管理サーバーが自動的に起動します。
WebLogic Server 管理コンソールを起動します。
ブラウザから、次のURLを使用して、Oracle WebLogic Server管理コンソールにログインします: http://
hostname
:7001/console
。コンソールが起動し、ドメインのホーム・ページが表示されます。
WebLogic Serverインスタンスをホストするマシンを作成するには:
「ドメイン構造」ウィンドウから、「環境」→「マシン」を選択します。「新規」をクリックします。「新しいマシンの作成」ページが表示されます。マシンの名前(この例ではTest)を入力して、「次」をクリックします。次のページで「終了」をクリックします。図12-1は、「新しいマシンの作成」ページを示しています。
「マシンのサマリー」ページは、図12-2のようになります。
マシンに関連付ける2つのWebLogic Serverインスタンスを作成します。1つは、Coherence*Web記憶域を有効にし、もう1つはCoherence*Web記憶域を無効にします。これらのサーバーには後の手順でアプリケーションがデプロイされます。
サーバー・インスタンスを作成するには:
「マシンのサマリー」ページで、マシンの名前をクリックし、「マシンの設定」ページを開きます。「サーバー」タブ→「追加」をクリックして、サーバーを作成します。
「マシンにサーバーを追加」ページで「新しいサーバーを作成してこのマシンに関連付けます。」を選択し、「次」をクリックします。
「新しいサーバーの作成」ページでサーバーの詳細を指定します。
「サーバー名」にServerA
を、「サーバー・リスニング・ポート」に8081
を入力します。図12-3に示すように、「いいえ、これはスタンドアロン・サーバーです。」が選択されていることを確認します。「終了」をクリックします。
「マシンの設定」ページに戻ったら、「追加」をクリックして、前述の手順を繰り返し、2番目のサーバーを作成します。
「サーバー名」にServerB
を、「サーバー・リスニング・ポート」に8082
を入力します。「いいえ、これはスタンドアロン・サーバーです。」が選択されていることを確認します。「終了」をクリックします。
「サーバーのサマリー」ページは、図12-4のようになります。
1つのCoherenceクラスタは、通信を可能にするグループ・アドレスを共有するCoherenceノードのグループです。Coherenceクラスタは、アプリケーション、モジュール、またはアプリケーション・サーバー(WebLogic Serverインスタンスまたはキャッシュ・サーバー)によって形成されるノードで構成されます。この手順では、Coherenceクラスタを作成して2つのWebLogic Serverインスタンスに割り当てます。
Coherenceクラスタを作成するには:
ドメインの「構造ウィンドウ」で「環境」をクリックして、「Coherenceクラスタ」をクリックします。「Coherenceクラスタのサマリー」ページで、「新規」をクリックします。「Coherenceクラスタ構成の作成」ウィザードの「Coherenceクラスタのプロパティ」ページで、「名前」フィールドにCoherenceCluster
を入力して、「次」をクリックします。
図12-5は、「Coherenceクラスタ構成の作成」ページを示しています。
「ユニキャスト・リスニング・ポート」フィールドに、8085
などの値を入力します。他の値は変更しないで、「次」をクリックします。
「Coherenceクラスタ構成の作成」ウィザードの「Coherenceクラスタ・ターゲット」ページで、ターゲットとしてServerAとServerBを選択します。「終了」をクリックします。
「Coherenceクラスタのサマリー」ページは、図12-8のようになります。
WebLogic Serverの1つをCoherence*Webローカル記憶域に対して有効にする必要があります。この手順では、ServerB
をCoherence*Web記憶域に対して有効にします。
「ドメイン構造」ツリーで「サーバー」をクリックし、「サーバーのサマリー」を開きます。
「ServerB」をクリックします。
「ServerBの設定」で、「構成」タブをクリックし、次に「Coherence」タブをクリックします。
図12-9に示すように、Coherence*Webローカル記憶域有効チェック・ボックスを選択します。
「保存」をクリックします。
カウンタWebアプリケーションは、JSPとして実装される簡単なカウンタです。このカウンタはHTTPセッション属性として格納され、ページへのアクセスごとにカウントが増えます。
カウンタWebアプリケーションを作成するには:
次の手順で標準のWebアプリケーション・フォルダを作成します。
/ /WEB-INF
次のコードをテキスト・ファイルにコピーして、/WEB-INF
フォルダにweb.xml
と名前を付けて保存します。
<?xml version = '1.0' encoding = 'windows-1252'?> <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> <description>Empty web.xml file for Web Application</description> </web-app>
/WEB-INF
フォルダにweblogic.xml
ファイルを作成します。
セッション・ディスクリプタの永続ストア・タイプとしてcoherence-web
を参照します。
coherence-cluster-ref
スタンザでCoherenceクラスタを参照します。
例12-1は、サンプルのweblogic.xml
ファイルを示しています。
WEB-INF
フォルダにlib
サブフォルダを作成します。空白のままにします。
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
ファイルを作成します。例12-2は、MANIFEST.MF
ファイルのサンプルを示しています。
Webアプリケーション・フォルダの構成は、次のように表示されます。
/ /counter.jsp /META-INF/MANIFEST.MF /WEB-INF/lib/ /WEB-INF/web.xml /WEB-INF/weblogic.xml
Webアプリケーション・フォルダにZIPまたはJAR処理を行い、counter.war
と名前を付けてファイルを保存します。
管理対象WebLogic ServerのServerA
とServerB
を起動します。WebLogicとCoherenceは緊密に統合されているため、管理対象サーバーとともにキャッシュ・サーバーが起動します。管理対象サーバーは、コマンド行またはWebLogic Server管理コンソールから起動できます。
次に、コマンド行からサーバーを起動する手順を示します。
ドメインのbin
フォルダからコマンド・プロンプトを開きます。この例では、bin
フォルダがc:\Oracle\user_projects\domains\base_domain\bin
に配置されていることを想定しています。
次のコマンドを入力して、ServerA
を起動します。
startManagedWebLogic.cmd ServerA
プロンプトが表示されたら、サーバーのユーザー名およびパスワードを入力します。
ドメインのbin
フォルダから2番目のコマンド・プロンプトを開きます。
次のコマンドを入力して、ServerB
を起動します。
startManagedWebLogic.cmd ServerB
プロンプトが表示されたら、サーバーのユーザー名およびパスワードを入力します。
サーバーが実行中の場合は、WebLogic Server管理コンソールの「サーバーのサマリー」ページに図12-10に類似した応答が表示されます。
ノード・マネージャを起動し、その後WebLogic Server管理コンソールからWebLogic Serverインスタンスを起動します。ノード・マネージャは、Oracle WebLogic Serverとは別のプロセスとして稼働するJavaユーティリティで、管理サーバーを基準とした場所に関係なく、管理対象サーバーに対する共通操作の実行を可能にします。
ノード・マネージャを起動するには、「スタート」→「すべてのプログラム」→「Oracle」→「WebLogic Server 12c」→「ツール」→「ノード・マネージャ」の順に移動します。
WebLogic Server管理コンソールのドメインの「構造ウィンドウ」で、「環境」→「サーバー」をクリックします。WebLogic Server管理コンソールの「サーバーのサマリー」ページから、「制御」タブをクリックして、ServerA
およびServerB
を起動します。
サーバーが実行中の場合は、WebLogic Server管理コンソールの「サーバーのサマリー」ページに図12-10に類似した応答が表示されます。
実行中の管理対象サーバーにcounter.war
アプリケーションをデプロイします。
counter.war
アプリケーションをデプロイするには:
Oracle WebLogic Server管理コンソールの「ドメイン構造」メニューで、「デプロイメント」をクリックして「デプロイメントのサマリー」ページを開きます。
「インストール」をクリックします。「アプリケーション・インストール・アシスタント」ウィザードが開きます。
図12-11に示すように、counter.war
ファイルの場所に移動します。「次」をクリックします。
図12-12に示すように、「このデプロイメントをアプリケーションとしてインストールする」を選択します。「次」をクリックします。
図12-13に示すように、デプロイメントのターゲットをServerA
およびServerB
に指定します。
図12-14に示すように、「オプション設定」ページで、デフォルトを受け入れます。「終了」をクリックします。
「デプロイメントのサマリー」ページの表内にcounter.war
ファイルが表示されます。図12-15に示すように、この表は、アプリケーションがServerA
およびServerB
でアクティブかつ実行中(サーバーが実行中のため)であることを示しています。
サンプルを検証するには:
ブラウザを開き、次のURLを使用してServerA
のカウンタ・インスタンスにアクセスします。
http://
host
:8081/counter/counter.jsp
図12-16に示されるように、カウンタ・ページが表示され、カウンタが1に設定されています。
新しいブラウザ(または新しいブラウザのタブ)で、次のURLを使用してServerB
のカウンタ・インスタンスにアクセスします。
http://
host
:8082/counter/counter.jsp
図12-17に示すように、カウンタ・ページが表示され、セッション・データに基づいてカウンタが2に増えています。
ページをリフレッシュすると、カウンタが3に増えます。元のブラウザ(またはブラウザ・タブ)に戻り、インスタンスをリフレッシュすると、カウンタに4が表示されます。
カスタム・セッション・キャッシュ構成ファイルを使用する場合は、使用しているアプリケーションでパッケージ化する必要があります。また、グリッド・アーカイブ(GAR)ファイルに格納して、記憶域が有効なCoherenceクラスタ・メンバーとして機能するWebLogic ServerクラスタにGARファイルをデプロイする必要があります。カスタム・セッション・キャッシュ構成ファイルの使用の詳細な説明はこのドキュメントの対象範囲ではありません。カスタム・セッション・キャッシュ構成ファイルの作成およびデプロイの詳細は、『Oracle Fusion Middleware Oracle Coherence*WebでのHTTPセッション・マネージメントの管理』のカスタム・セッション・キャッシュ構成ファイルの使用に関する項を参照してください。