Middleware
WebLogic Server
このHow-Toドキュメントを開始する前に、以下のソフトウェアをインストールする必要があります。
次の図に、4ノードのWebLogicクラスタと、サーブレットをホストしている5番目のノード(管理サーバー)を示します。 サーブレットは、ブラウザから取引注文を受け取り、処理を行うクラスタへ送信します。 ラウンドロビン方式のロードバランシングにより、クラスタ・ノード上のステートレスEJBが1つ選択され、2つのデータソースに対して、取引注文レコード と取引メッセージ・レコードの両方の書込みが行われます。 この2つのレコードは1つのXAトランザクションに含まれますが、ここでは、説明を簡単にするため、1つのOracle XEインスタンスを使用します。
1. 構成ウィザードを起動します(「 スタート」→「 プログラム」→「 Oracle WebLogic」 →「 WebLogic Server 11gR1」→「 Tools」→「 Configuration Wizard」)。
2. 「 Create a new WebLogic domain」を選択し、「 Next」をクリックします。
3. 「 Base this domain on an existing template」を選択し、「 Browse」 をクリックします。「 zeroloss_domain_10.3.1.0.jar 」 ファイルを選択し、「 OK」に続いて「 Next」をクリックします。
4. ドメインの名前と場所について、デフォルトのままにするか、または新しい値を選択します(デフォルトでは、 user_projectsディレクトリ内にドメインが配置されます)。 「 Next」をク リックします。
5. デフォルトの管理者用資格証明(weblogic/abcd1234)を使用するか、または新しい資格証明を選択します。 「 Next」 をクリックします。
6. サーバー起動モードおよびJDKをデフォルトのままにします。 「 Next」をクリックします。
7. JDBCデータソースは、localhost:1521上で実行されるOracle XE用にあらかじめ設定されており、ユーザーおよびパスワードには、それぞれ'weblogic'と'abcd1234'が指定されています。 ご使用のデータベースに合わせて、適宜変更してください。 取引注文用に2つ、またWLDFイベント・レコード処理用に1つ、合計3つのデータソースが設定されています。 「 Next」をクリックす ると、接続のテストが実行されます。 接続が確認されたら、もう一度「 Next」をクリックします。
8. ドメイン・テンプレートには、一連のデータベース・スクリプトも含まれています。このスクリプトにより、WLDFおよびアプリケーションに必要な表とシー ケンスが設定されます。 「 Run Scripts」ボタンをクリックし、Resultsペインにエラーが表示されないことを確認します。 CFGFWK-20839: Database Load Successful!というメッ セージが表示されます。 「 Next」をクリックします。
9. オプション設定は変更しません。 「 Next」をクリックします。
10. 構成サマリーに目を通し、すべてが正しいことを確認したら、「 Create」をクリックします。
11. 「 Done」をクリックして、構成ウィザードを終了します。
"アプリケーションの実行"セクションへスキップし、アプリケーションを実行します。
1. 構成ウィザードを起動します(「 スタート」→「 プログラム」→「 Oracle WebLogic」 →「 WebLogic Server 11gR1」→「 Tools」→「 Configuration Wizard」)。
2. 「 Create a new WebLogic domain」を選択し、「 Next」をクリックします。
3. 「 Generate a domain configured automatically to support the following products:」を選択します。 "Basic WebLogic Server Domain"がチェックされていることを確認し、「 Next」をクリックします。
4. ドメイン名を'zeroloss_domain'に変更します。 デフォルトの場所を使用するか、または別のディレクトリを選択します。 「 Next」 をクリックします。
5. 管理者用ユーザー名を'weblogic'と設定します。 パスワードに、'abcd1234'または基準を満たす任意のパスワードを指定します。 「 Next」をクリックします。
6. サーバー起動モードおよびJDKをデフォルトのままにします。 「 Next」をクリックします。
7. オプション設定は変更しません。 「 Next」をクリックします。
8. 構成サマリーに目を通し、すべてが正しいことを確認したら、「 Create」をクリックします。
9. 「 Done」をクリックして、構成ウィザードを終了します。
| node1 | 7004 |
| node2 | 7005 |
| node3 | 7006 |
| OracleDS2 | jdbc/OracleDS2 |
| WLDF-DS | jdbc/WLDF-DS |
1. ノード・マネージャを起動します(「 スタート」→「 プログラム」→「 Oracle WebLogic」 →「 WebLogic Server 11gR1」→「 Tools」→「 Node Manager」、または コマンドラインから、 %FMW_HOME%\wlserver_10.3\server\bin\startNodeManager.cmd)。
2. 管理サーバーが稼働していない場合は、%FMW_HOME%\user_projects\domains\zeroloss_domain\ startWebLogic.cmdというコマンドを実行して管理サーバーを起動します。
3. ドメイン作成中に指定した資格証明を使用して、WebLogic管理コンソール(
http://localhost:7001/console) へログインします。
Domain Structureツリーで、"Environment"ノードの下の「
Servers」ノードをクリックします。
5. Summary of Serversページで「
Control」タブを選択します。 クラスタ内の各ノードをチェックしたら、「
Start」 をクリックします。
数分後にすべてのノードが開始されたら、ブラウザをリフレッシュします。サーバー一覧は、次のように表示されます。
6. Trade Captureページ(
http://localhost:7001/ZeroLossProjectWeb/trade.jsp) へ移動します。
「
Submit」ボタンをクリックし、取引注文を作成します。 "message output"行に、デバッグ出力として、データベースへの書込み内容が表示されます。 2行目のノード名が表示された部分に特に注意してください。 "Submit"ボタンを数回クリックすると、ノード名が周期的に変わることが確認できます。これは、クラスタにおいて、ラウンドロビン方式が正しく機能 していることを示します。 正確な順序はWebLogicにより内部的に決定されるため、ノード番号に直接従うとは限りません。 確認した順序を書き留めておきます。 たとえば、ここでは"node0"、"node1"、"node3"、"node2"という順序が確認されました。
7. 別のブラウザ・ウィンドウで、
http://localhost:7001/ZeroLossProjectWeb/LastTradesServlet?numResults=20へ 移動します。
このページでは、最後の取引を先頭に、直近の20件の取引が表示されています。 この表には、トランザクションを開始したクラスタ・ノードとトランザクションをコミットしたクラスタ・ノードが表示されます。 ステップ4で実行したそれぞれの処理については、(うまくいけば)両方の列に同じノード名が表示されます。
8. 次にノード障害をシミュレーションします。 Trade Captureページへ戻り、最後に完了したトランザクションを表示します。 どのノードが使用されたかを書き留めてください。下のスクリーンショットでは"node2"が使用されているため、ラウンドロビン方式に従うと、次に選択 されるノードは"node0"になります。
9. WebLogic Serverコンソールへ戻り、サーバー・リストを表示します。 "Control"タブが選択されていることを確認します。 次のトランザクションで使用される予定のノードの隣にあるボックスにチェックを付けます。
まだノードを停止しないでください。 トランザクションを受け取るまで、このノードを停止しません。 次のステップのために、このページの準備を整えておきます。
10. Trade Captureページへ戻ったら、Sleepパラメータを20秒に設定します。 これにより、EJBはトランザクション中に一時停止するため、その間にノードを停止してリトライを発生させることができます。 「
Submit」 をクリックし、すぐにはページの表示が変わらないことを確認します。
11. WebLogic Serverコンソール・ページへ戻り、「
Shutdown」ボタンをクリックし、「
Force Shutdown Now」を選択します。
12. Trade Captureページへ切り替えると、ラウンドロビン・スケジュールに従って、停止されたノードの次のノードによって取引が処理されたことが分かります。 ここでは、"node0"で処理に失敗したため、"node1"が選択されました。
これにより、"node0"がトランザクション中に停止されても、クラスタは別のノードでトランザクションをリトライし、データ損失を防いだことが分かり ます。
13. Control Panelページに移動し、「
Show the last trades」リンクをクリックして表をリフレッシュ します。以下のとおり、最新の取引がハイライト表示されます。 ここから、トランザクションを受けとったノードと最終的にトランザクションをコミットしたノードが異なることを確認できます。