5 Messaging API サンプル ( 非推
こ のサンプルは、 2 つ目の方法を使用し ます。
WebLogic Integration Messaging API では、 2 つの メ ッ セージ配信 メ カニズム をサ
ポー ト し ています。同期-送信側アプ リ ケーシ ョ ンは、 公開 さ れた メ ッ セージが宛先に配信 さ れ る ま で待機し ます。 メ ッ セージング シ ス テムは、 メ ッ セージ公開処理の結果 が判明し た後、 アプ リ ケーシ ョ ンに制御を返し ます。 アプ リ ケーシ ョ ンは、
タ イ ムア ウ ト が発生する か、 処理ス テータ スが判明する かのど ち ら かが起こ る ま で待機し ます。
遅延同期- メ ッ セージ公開後に、 制御がアプ リ ケーシ ョ ンに返 さ れます。 ア プ リ ケーシ ョ ンには XOCPMessageTokenオブジ ェ ク ト が返さ れます。 アプ リ ケーシ ョ ンは後でそのオブジ ェ ク ト にア ク セ ス し て メ ッ セージ配信のス テー タ ス をチェ ッ ク でき ます。
こ のサンプルでは、 同期および遅延同期の双方の メ ッ セージ配信 メ カニズムの使 い方を例示し ています。
Messaging API
サンプルには、 ビ ジネス メ ッ セージ を送信する 3 社の ト レーデ ィ ング パー ト ナ (Partner1、 Partner2、 および Partner3) が含まれます。 MessagingAPI
サンプルには、 4 つの Java ソ ース コー ド フ ァ イ ル (MdmTp1Servlet.java、 MdmTp2Servlet.java、MdmTp2Servlet.java、 および WaiterPlugin.java) が含まれます。WaiterPlugIn.java
コー ド の詳細については、 5-7 ページの 「実行フ ローの ト
レース」 を参照し て く だ さ い。フ ァ イル 含まれる ソース コー ド
MdmTp1Servlet.java
Partner1
ト レーデ ィ ン グパー ト ナ MdmTp2Servlet.javaPartner2
ト レーデ ィ ン グパー ト ナ MdmTp3Servlet.javaPartner3
ト レーデ ィ ン グパー ト ナ WaiterPlugIn.java ハブ フ ィ ル タ ロ ジ ッ クプ ラ グ イ ンMessaging API サンプルを実行する前 に
Messaging API サンプルを実行する前に、 次の手順を実行し ます。
1. 1-3
ページの 「サンプルの実行前の作業」 に記載の手順に従います。2.
サンプル WebLogic Server への接続が妨げ られない よ う にブ ラ ウ ザのプ ロ キ シ設定を確認し ます。 Web ブ ラ ウザ コ ン フ ィ グ レーシ ョ ンの要件の詳細に ついては、 『WebLogic Integration の起動、 停止およびカ ス タ マ イ ズ』 の「WebLogic Integration 管理ツール と 設計ツール」 の 「Web ブ ラ ウザ コ ン フ ィ グ レーシ ョ ンの要件」 を参照し て く だ さ い。
Messaging API サンプルの実行
Messaging API
サンプルを実行する には、 次の手順を実行し ます。1.
WLI_HOME (WebLogic Integration を イ ン ス ト ールし たデ ィ レ ク ト リ ) に移動 し ます。cd WLI_HOME
Windows の例
WebLogic Platform
を c:\beaデ ィ レ ク ト リ に イ ン ス ト ール し た場合は、WLI_HOME
のパスは、
c:\bea\weblogic700\integration と な り ます。
UNIX の例
WebLogic Platform
を /home/me/beaデ ィ レ ク ト リ に イ ン ス ト ールし た場 合は、WLI_HOMEのパスは、/home/me/bea/weblogic700/integrationと な り ます。
2. WebLogic Integration
の上位レベルの環境変数を設定するには、 お使いのプラ ッ ト フ ォームに合った setenvス ク リ プ ト を実行し ます。
Windows
の場合 setEnv
UNIX
の場合 . setenv.sh3.
プ ラ ッ ト フ ォームに合わせて適切な手順を実行し、RunSamplesス ク リ プ ト を起動し ます。
Windows:
[
ス ター ト |プ ロ グ ラ ム| BEA WebLogic Platform 7.0 | WebLogicIntegration 7.0
| Integration Examples | Start Server and Launch Examples(with dataloader)]
を選択し ます。
UNIX:
a)
PATH環境変数に、 Netscape 実行フ ァ イ ル (netscape) が格納 さ れた デ ィ レ ク ト リ が含まれている こ と を確認し ます。b)
RunSamplesス ク リ プ ト を実行し ます。cd $SAMPLES_HOME/integration/samples/bin RunSamples
警告:
UNIX
シ ス テムの場合、netscape実行フ ァ イ ルが入っ たデ ィ レ ク ト リ がPATH環境変数に含まれてい る必要があ り ます。 環 境変数に含まれていない場合は、RunSamples ス ク リ プ ト の実 行時にサンプル起動ページが表示さ れません。 サンプル起動 ページは、 現在RunSamplesス ク リ プ ト が実行 さ れ てい る マシ ンでNetscape
ブ ラ ウ ザを起動し て、 次のURL
を入力する と 起 動 さ れ ます。http://localhost:7001/index.html
4.
RunSamplesス ク リ プ ト のコ ン フ ィ グ レーシ ョ ン セ ク シ ョ ンが実行済みであ る こ と が検知 さ れる と 、 次のプ ロ ンプ ト が表示さ れます。The WebLogic Integration repository has already been created and populated, possibly from a previous run of this RunSamples script. Do you want to destroy all the current data in the repository and create and populate the WebLogic Integration repository, again? Y for Yes, N for No こ の質問に N と 入力する と 、 リ ポジ ト リ の作成および格納を行 う 手順が省略 さ れ、 WebLogic Server のサンプル イ ン ス タ ン ス を起動する手順のみが実行 さ れます。
こ の質問に Y と 入力する と 、 リ ポジ ト リ の作成および格納が改めて行われ、
その後で WebLogic Server のサンプル イ ン ス タ ン ス を起動する手順が実行 さ れます。Yと 入力し た場合、 その時点で リ ポジ ト リ に格納さ れてい る全デー
タが破棄さ れ、 リ ポジ ト リ にサンプル データが再ロー ド さ れます。 現在のサ ンプル データ が変更ま たは削除さ れ、 新規ま たは未変更のサンプル データ を リ ポジ ト リ に格納する場合にのみ、Yを入力し て く だ さ い。
こ れで、RunSamplesス ク リ プ ト は WebLogic Server の イ ン ス タ ン ス をバ ッ ク グ ラ ウ ン ド プ ロセ ス と し て開始し 、 サンプル起動ページが表示さ れます。
5.
サンプル起動ページの左ペイ ンで、 [ サンプル アプ リ ケーシ ョ ン ] の下の[Messaging API]
の リ ン ク を ク リ ッ ク し ます。 Messaging API サンプルのオプ シ ョ ン メ ニ ューは、 右ペイ ンに表示さ れています。必要に応じ て、 3 つのオプシ ョ ンをすべて表示で き る よ う にブ ラ ウザの画面をサ イ ズ変更し て く だ さ い。
6. 1
つ目のオプシ ョ ン ([Partner3 ス ポーク を参加 させる ]) を ク リ ッ ク し ます。こ のオプシ ョ ンについての メ ッ セージが表示 さ れる まで待機し 、 次のス テ ッ プに進んで く だ さ い。
7. 2
つ目のオプシ ョ ン ([Partner2 ス ポーク を参加 させる ]) を ク リ ッ ク し ます。こ のオプシ ョ ンについての メ ッ セージが表示 さ れる まで待機し 、 次のス テ ッ プに進んで く だ さ い。
8. 3
つ目のオプシ ョ ン ([Partner1 ス ポーク を参加 させて リ ク エス ト を送信 ])を ク リ ッ ク し ます。
Messaging API サンプルが正常に実行 さ れる と 、 右ペイ ンの下部に次の出力
結果が表示さ れます。Partner1 process flow:
Starting XOCPAppplication... done.
Creating conversation : verifierConversation:1.0:
requestor_Partner1_1001029696695_341001029696695...done.
send string for Message 1 = FIRST MESSAGE
Sending message 1 using synchronous deferred delivery method to Partner 2 Sending a second message before checking for acknowledgment on the first send string for Message 2 = SECOND MESSAGE
Sending message 2 using synchronous delivery method to Partner 3 success status for message 2
Waiting for Message 2 response... done.
Processing reply for Message 2:
Received string for Message 2 = partner3 -- second message Verification for Message 2 SUCCESS
Doing something else... done
Waiting acknowledgment for Message 1... Acknowledgment received Success status for message 1
Waiting for Message 1 response... done Processing reply:
Received string for Message 1 = partner2 -- first message Verification for Message 1 SUCCESS
Terminating conversation:verifierConversation:1.0:
requestor_Partner1_1001029696695_341001029696695 success
Shutting down session... done.
9.
こ の と き、 さ ら に多 く の B2B サンプルを実行する場合は、 サンプル起動ペー ジを開いた状態で、 WebLogic Server のサンプル イ ン ス タ ン スの実行を続行 し ます。こ の時点で、 こ れ以上 B2B サンプルを実行し ない場合は、 各プ ラ ッ ト フ ォームに合わせて適切な手順を実行し、 WebLogic Server の現在の イ ン ス タ ン ス を シ ャ ッ ト ダ ウ ン し ます。
Windows:
cd %SAMPLES_HOME%\config\integration\samples stopWebLogic
UNIX:
cd $SAMPLES_HOME/config/integration/samples stopWebLogic
実行フ ローの ト レース
以下は、 Messaging API サンプルの実行フ ローを ト レースする手順です。
1.
RunSamplesス ク リ プ ト が起動 さ れ、 次の結果が得 られます。a. WebLogic Server
のサンプル イ ン ス タ ン スが開始さ れます。b.
ブ ラ ウザが開き、 サンプル起動ページが表示さ れます。c.
サンプル起動ページで [Messaging API] リ ン ク を ク リ ッ クする と 、[Messaging API]
サンプル ページが表示 さ れます。 こ のページには、[Partner3
スポー ク を参加さ せる ]、 [Partner2 スポー ク を参加さ せる ]、 お よび [Partner1 ス ポーク を参加 させて リ ク エス ト を送信 ] の 3 つのオプ シ ョ ンが表示 さ れます。2. [Partner3
スポー ク を参加さ せる ] オプシ ョ ン を選択する と 、 次の結果が得ら れます。a. HTTP
要求が MdmTp3サーブレ ッ ト にポ ス ト さ れます。b.
MdmTp3は、MdmTp3Servlet.javaか ら doPost メ ソ ッ ド を呼び出し ます。c.
doPostメ ソ ッ ド は、 ト レーデ ィ ン グ パー ト ナ Partner3 のXOCPApplication
を起動し ます。3. [Partner2
スポー ク を参加さ せる ] オプシ ョ ンが選択 さ れる と 、 次の結果が得 られます。a. HTTP
要求が MdmTp2サーブレ ッ ト にポ ス ト さ れます。b.
MdmTp2は、MdmTp2Servlet.javaか ら doPostメ ソ ッ ド を呼び出し ます。c.
doPostメ ソ ッ ド は、 ト レーデ ィ ン グ パー ト ナ Partner2 のXOCPApplication を起動し ます。
4. [Partner1
スポー ク を参加さ せて リ ク エス ト を送信 ] オプシ ョ ン を選択する と 、 次の結果が得 られます。a. HTTP
要求が MdmTp1サーブレ ッ ト にポ ス ト さ れます。b.
MdmTp1は、MdmTp1Servlet.javaか ら doPost メ ソ ッ ド を呼び出し ます。c.
doPostメ ソ ッ ド は、 ト レーデ ィ ン グ パー ト ナ Partner1 のXOCPApplication
を起動し ます。d.
doPostは 1 つ目の メ ッ セージ を送信し、 3 つの ト レーデ ィ ング パー ト ナ(Partner1、 Partner2、 および Partner3) 間の一連の メ ッ セージ を ト リ ガ し ます。 こ のサンプルの 3 つの ト レーデ ィ ン グ パー ト ナはすべて、
VerifierHubChannel 配信チャ ネルの使用 と verifierConversation 会話への参
加のために、 WebLogic Integration リ ポジ ト リ に登録し ます。 Partner1 は、要求側の ロールで リ ポジ ト リ に登録 さ れます。 Partner2 および Partner3 は 応答側の ロールで登録さ れます。
次の図は、 こ れ らのビ ジネス メ ッ セージの送受信が最も行われやすい タ ス ク 順序を示し ます。 正確な タ ス ク 順序はタ イ ミ ングに関係し てお り 、 Java 仮想 マシ ンのス レ ッ ド の ス ケジ ュー リ ングに応じ て異な り ます。
図5-1 ト レーデ ィ ングパー ト ナ間のメ ッ セージの流れを示す会話図
次の タ ス ク順序では、 図 5-1 内の対応する文字で示 さ れる各手順の詳細につ いて説明し ます。
a. Partner1
は Partner2 へテキ ス ト FIRST MESSAGEを伴 う メ ッ セージ を送信 し ます。 こ の メ ッ セージは、 遅延同期送信 さ れます。 し たがっ て、Partner1
は Partner2 か ら の返信を待機も ブ ロ ッ ク もせず、 引き続き タ ス ク の実行を行います。メ ッ セージの、 ブ ロ ッ ク を行わない と い う 局面は、 Partner1 のオブジ ェ ク ト ラ イ フ ラ イ ンに よ っ て、 会話図 (図 5-1) に示さ れています。 Partner1 が初めてア ク テ ィ ブになっ た と き、 Partner1 の ラ イ フ ラ イ ンは、 破線 (非 ア ク テ ィ ブ状態を示す) 表示か ら細い長方形 (ア ク テ ィ ブ状態を示す)
の表示に変化し ます。 ラ イ フ ラ イ ンは、 Partner1 が最初の メ ッ セージを送 信し た後も、 引き続き ア ク テ ィ ブです。 ア ク テ ィ ブであ る ため、 Partner1 は、 次の手順で示すよ う に、 別の メ ッ セージの送信な ど、 他のタ ス ク を 実行で き ます。
こ のサンプルで送信 さ れる メ ッ セージはすべて、 ハブ経由でルーテ ィ ン グ さ れます。WaiterPlugIn と い う ロ ジ ッ ク プ ラ グ イ ンがハブのフ ィ ル タ チェーンに追加 さ れています。 ハブを経由し て メ ッ セージがルーテ ィ ング さ れる と 、WaiterPlugInク ラ スの process メ ソ ッ ド が実行 さ れま す。process メ ソ ッ ド は、 送信さ れ る メ ッ セージの対象 と な る受信側を チェ ッ ク し ます。 対象 と な る受信側が Partner2 の場合、processは 15 秒 間ス リ ープ し ます。 それ以外の場合は、 直ちに メ ッ セージ を送信し ます。
図 5-1 に示す例では、 Partner1 か ら Partner2 へ送信 さ れた 1 つ目の メ ッ セージは、 15 秒間遅延 さ れます。
b. 1
つ目の メ ッ セージがまだ処理さ れてい る間に、 Partner1 はテキ ス ト SECOND MESSAGE と 共に 2 つ目の メ ッ セージを Partner3 へ送信し ます。 こ の メ ッ セージは、 同期送信 さ れます。 し たがっ て、 Partner1 は Partner3 が 返る ま でブ ロ ッ ク ま たは待機し てか ら でなければ、 他の タ ス ク を処理でき ません。
c.
図 5-1 で、 こ の Partner1 のブロ ッ ク がどの よ う に表現さ れてい る かに注意 し て く だ さ い。 2 つ目の メ ッ セージが同期し ている ため、 Partner1 の ラ イ フ ラ イ ンは、 Partner1 が 2 つ目の メ ッ セージ を送信後に、 細い長方形 (ア ク テ ィ ブ状態を示す) の表示か ら破線 (非ア ク テ ィ ブ状態を示す) 表示 に変化し ます。 非ア ク テ ィ ブ状態への変化は、 メ ッ セージが送信 さ れ、Partner3
に よ っ て確認応答があ る まで Partner1 は、 再びア ク テ ィ ブにな っ て他の タ ス ク を実行で き る よ う にな ら ない と い う こ と です。こ のサンプルの 2 つ目の メ ッ セージ と 、 すべての応答 メ ッ セージは、 ハ ブを経由し てルーテ ィ ン グ さ れます。 こ のハブで、WaiterPlugIn