HTTPセッション・ステートの管理

このOBEチュートリアルでは、サンプルのJava EE Webアプリケーションを使用して、Oracle WebLogic ServerのHTTPセッション・レプリケーション機能をテストします。 はじめに、管理コンソールを使用してレプリケーション・グループを定義します。 次に、アプリケーションのXMLデプロイメント・ディスクリプタを更新して、インメモリ・レプリケーションとJDBCレプリケーションの両方をテストしま す。 JDBCレプリケーションを使用するには、アクティブなJDBCデータソースが必要です。 現在のユーザー・セッションをホスティングしているサーバーを停止したあと、HTTPセッション・フェイルオーバーが成功したことを確認します。

約45分

トピック

このOBEチュートリアルでは、以下のトピックについて説明します。

インメモリ・レプリケーションのテスト
JDBCレプリケーションをサポートするためのデータベースの初期化
JDBCデータソースからクラスタへのターゲット設定
WebアプリケーションのJDBCレプリケーション設定
JDBCレプリケーションのテスト

 

このアイコンの上にカーソルを置くと、すべてのスクリーンショットがロードし、表示されます。 (警告:すべてのスクリーンショットが同時にロードされるため、ご使用のインターネット接続によってはレスポンス・タイムが遅くなる場合があります。)

各手順に関連したスクリーンショットのみを表示する場合 は、それぞれの手順にある各アイコンの上にカーソルを置いてください。

概要

WebLogic Serverは、インメモリ・レプリケーションを使用することで、あるサーバー・インスタンスから別のサーバー・インスタンスへセッション・ステートをコ ピーします。 プライマリ・サーバーは、クライアントからの最初の接続先となるサーバー上にプライマリ・セッションを作成してから、クラスタ内の別のWebLogic Serverインスタンス上にセカンダリ・レプリカを作成します。 Webアプリケーションをホスティングするサーバーに障害が発生した場合に使用できるように、レプリカは常に最新の状態に保たれます。

クライアントがクラスタ内のサーバーに接続してプライマリ・セッション・ステートが作成されると、プライマリ・ ステートをホスティングしているサーバーは、セカンダリをホスティングするサーバーを決定するために、クラスタ内の他のサーバーに対して順位付けを行いま す。 サーバーの順位は、サーバー・ロケーション(プライマリ・サーバーと同じマシン上にあるかどうか)と、プライマリ・サーバーの優先レプリケーション・グ ループへの加入状況を組み合わせて割り当てられます。

永続JDBCレプリケーションでは、データベースはセッション・オブジェクトを保存するように設定されます。こ の設定が行われると、クラスタ内の各サーバー・インスタンスは同じJDBCデータソースを使用して、データベース・アクセスを共有します。 このテクニックを使用すると、クラスタ内のすべてのサーバーがクライアント・リクエストを解決できるようになるため、フェイルオーバー機能は向上します が、パフォーマンスは大きく低下します。

トピック・リスト に戻る

シ ステム要件

システム環境が次の要件を満たしていることを確認してください。

ソフトウェア要件

このチュートリアルを始める前に、次のチュートリアルをあらかじめ完了しておく必要があります。

Oracle WebLogic Serverのインストールとドメインの作成
Oracle WebLogic Serverの管理対象サーバーの構成
基 本的なクラスタの作成
プ ロキシ・サーバーの構成
Configure JDBC Data Sources

チュートリアルを完了するには、実行中のデータベースが必要になります。

 

最小限のハードウェア要件

項目 仕様
プロセッサ速度 1GHz
メモリ 2GB
ハードディスク空き容量 1GB

トピック・リストに戻る

優先レ プリケーション境界の割当て

以下の手順を実行します。

1.

ApacheおよびWebLogic管理サーバーが実行されていない場合、これらを起動します。



2.

管理コンソールを起動します。 Change Centerパネルで、「Lock & Edit」をクリックします。 Domain Structureパネルで、「Environment」→「Servers」を選択します。

3. クラスタ化された管理対象サーバーのうちの1台を選択します。



4. Configuration」→「Cluster」タブをクリッ クします。



5. 次の値を入力します。

フィールド
Replication Group
dizzyRepGroup1
Preferred Secondary Group
dizzyRepGroup2


Save」ボタンをクリックします。



6. 前の手順を繰り返して、クラスタ内の2台目の管理対象サーバーに対しても、同じReplication GroupPreferred Secondary Groupを設定します。

7. 前の手順を繰り返して、クラスタ内の最後の管理対象サーバーに対しては、Replication GroupPreferred Secondary Group逆に設定します。

フィールド
Replication Group
dizzyRepGroup2
Preferred Secondary Group
dizzyRepGroup1

8. Change Centerパネルで、「Activate Changes」をク リックします。 クラスタ化された管理対象サーバーを起動します。

トピック・リストに戻る

Webアプリケーション のインメモリ・レプリケーション設定

以下の手順を実行します。

1.

サンプルのWebアプリケーションshoppingcart.warを ダウンロードします。



2.

jarなどのアーカイブ・ユーティリティを使用して、shoppingcartという名前を付けたフォル ダにshoppingcart.warを解凍します。


> mkdir shoppingcart
> cd shoppingcart

> jar xf ../shoppingcart.war



3.

shoppingcart/WEB-INF/weblogic.xmlファイルを編集します。

4.

コメントのあとに、次を追加します。

<session-descriptor>
  <persistent-store-type>replicated_if_clustered</persistent-store-type>
</session-descriptor>



5.

任意のアーカイブ・ユーティリティを使用して、shoppingcart.warを 再作成します。 以下に例をあげます。

> cd shoppingcart
> rm ../shoppingcart.war
> jar cf ../shoppingcart.war *


6.

管理コンソールを使用して、shoppingcart.warをイン ストールしてから開始します。 使用するクラスタに対して、アプリケーションのターゲット設定を行います。






ヒント:新規アプリケーションをインス トールしたあとは、変更をアクティブ化する必要があります。

トピック・リストに戻る

インメ モリ・レプリケーションのテスト

以下の手順を実行します。

1.

Webブラウザで、Apache Webサーバーを使用してshopping cartア プリケーションを表示します。 たとえば、Apacheが80番のポートで実行される場合、http://localhost/shoppingcartを 使用します。



2.

Go Shopping」リンクをクリックします。 「Add to Shopping Cart」リ ンクを使用して、カートにアイテムを追加します。 「Back to Home Page」をクリックします。


3.

前の手順を繰り返して、カートに2番目のアイテムを追加します。 次に、「View Shopping Cart」リン クをクリックします。

 

4.

管理対象サーバーを起動した際に使用したコマンド・シェルを確認します。 ユーザー・セッションがどのサーバーにホスティングされているかを割り出します。


"added new element: package of 5 legal pads"

"Your shopping cart includes:
        Item: box of 12 pens (black) price: 4.99
        Item: package of 5 legal pads price: 15.99"


5.

ユーザー・セッションをホスティングしているサーバーを停止します。

 

6.

アプリケーションを使用して、再度ショッピング・カートを表示して、中身が変わっていないことを確認します。


7.

再度、サーバー・シェルを使用して、ユーザーがフェイルオーバーされた(セカンダリ)サーバーを特定します。 選択したセカンダリは、使用しているマシンとレプリケーション・グループの定義に一致しているでしょうか。

 

8.

停止したサーバーを再起動します。 Webブラウザを閉じます。

 

 トピック・リストに戻る

JDBCレ プリケーションをサポートするためのデータベースの初期化

以下の手順を実行します。

1.

SQLスクリプトjdbc_replication_oracle.sqlを ダウンロードします。 データベースがOracleでない場合は、WebLogic Server オ ンライン・ドキュメントから必要なSQLを取得します。



2.

お使いのデータベースのユーティリティを使用して、jdbc_replication_oracle.sqlを実行しま す。



3.

お使いのデータベースのユーティリティを使用して、WL_SERVLET_SESSIONSという名前の新規表が含まれ ていることを確認します。

 


 トピック・リストに戻る

JDBC データソースからクラスタへのターゲット設定

以下の手順を実行します。

1.

管理コンソールへ戻り、Change Centerパネルで、「Lock & Edit」をクリックします。 次に、Domain Structureパネルで、「Services」→「JDBC」→「Data Sources」を選択しま す。

 

screen

 

2.

New」ボタンをクリックします。

 

screen

 

3.

NameフィールドとJNDI Nameフィールドに、SessionDSと いう値を入力します。 お使いのデータベース・タイプと適切なドライバを選択します。 この際、非XAドライバを選択 します。

 

screen

 

4.

トランザクション設定はデフォルトのままにし、「Next」をクリックします。

 

5.

データベース接続に必要なプロパティを入力して、「Next」をクリックします。 次に、「Finish」 をクリックします。

 

6.

新規データソースを選択します。

 

7.

Targets」タブをクリックします。

 

screen

 

8.

クラスタ全体に対して、データソースのターゲット設定を行います。

 

screen

 

Save」をクリックします。

 

9.

Change Centerパネルで、「Activate Changes」をクリックします。

 

 トピック・リストに戻る

Web アプリケーションのJDBCレプリケーション設定

以下の手順を実行します。

1.

再度、shoppingcart/WEB-INF/weblogic.xmlファイ ルを編集します。


2.

JDBCレプリケーションをサポートするために、<session-descriptor>要素を変更しま す。

<session-descriptor>
  <persistent-store-type>jdbc</persistent-store-type>
  <persistent-store-pool>SessionDS</persistent-store-pool>
  <persistent-store-table>WL_SERVLET_SESSIONS</persistent-store-table>
</session-descriptor>



3.

任意のアーカイブ・ユーティリティを使用してshoppingcart.warを 再作成し、 既存ファイルを上書きします。 以下に例をあげます。

> cd shoppingcart
> jar cf ../shoppingcart.war *


4.

管理コンソールを使用して、shoppingcart.warを更新(クラスタに再配置)します。



 トピック・リストに戻る

JDBC レプリケーションのテスト

以下の手順を実行します。

1.

再度、ショッピング・カート・アプリケーションをテストします。 カートに数個のアイテムを追加してから、その中身を表示します。



2.

お使いのデータベースのユーティリティを使用して、WL_SERVLET_SESSIONS表の内容を確認します。 WL_CONTEXT_PATHと いう名前の列の値が"shoppingcart.war"になっている行が含まれます。


3. ユーザー・セッションをホスティングしているサーバーを停止します。

4.

アプリケーションを使用して、再度ショッピング・カートを表示し、中身が変わっていないことを確認します。



5.

ユーザーがフェイルオーバーされたサーバーを確認します。


ヒント:JDBCレプリケーションを使用しているため、クラスタ内のどのサーバーに対しても、ユーザーをリダイレクトできま す。


 トピック・リストに戻る


このレッスンで学習した内容は次のとおりです。

クラスタのレプリケーション・グループ設定

トピック・リストに戻る

このOBEチュートリアルについての質問は、OBE Discussion Forumに投稿してください。

トピック・リストに戻る

このアイコンの上にカーソルを置くと、すべてのスクリーンショットが 非表示になります。