TCPIP Client ノード・サンプルの実行
サンプルのインポートおよびデプロイが完了したら、非同期サンプルの実行および同期サンプルの実行の項の解説に従って実行することができます。
「拡張機能」タブで利用できるストリーム制御オプションの詳細は、拡張オプションを参照してください。
これらのノードがどのように機能し、構成されるかに関する概要は、IBM Integration Bus 資料の TCP/IP の概要を参照してください。
また、このサンプルを拡張して、別の TCP/IP サーバーと通信することもできます。TCPIP Client ノード・サンプルの拡張を参照してください。
サンプルの実行時に問題が発生した場合は、IBM Integration 資料のサンプル実行時の問題の解決を参照してください。
このサンプルは、メッセージ・フロー TCPIPAsyncIn、TCPIPAsyncOut、および TCPIPServerSimulation を使用します。
サンプルを実行するには、次のようにします。
- 「アプリケーション開発」ビューで、TCPIPClientNodesSampleFlowProject を展開します。
- 「フロー・テスト」ディレクトリーを展開し、TCPIPAsyncTest.mbtest をダブルクリックして、テスト・クライアントでメッセージを開きます。「エンキュー」をクリックします。
- 「詳細プロパティー」パネルで「メッセージの送信」をクリックします。
以下のイベントが発生します。
- WebSphere MQ の要求メッセージが、TCPIP_ASYNC_IN キュー上に置かれます。
この要求は、TCPIPAsyncOut メッセージ・フローによって読み取られます。
- JavaCompute ノードは、サーバーのホスト名とポート番号がメッセージ本体に指定されているかどうかを調べます。
これらのフィールドが未設定の場合、JavaCompute ノードは効力を持ちません。
JavaCompute ノードの使用方法の例については、TCPIP Client ノード・サンプルの拡張を参照してください。
- ポート 7777 上の TCPIPClientOutput ノードを使用して、メッセージが送信されます。
このノードの「要求」タブ上で、この TCP/IP 接続に関連付けられている「返信用 ID の場所」プロパティーを WebSphere MQ ReplyToQ に設定します。
- TCPIPServerSimulation フロー内の TCPIPServerInput ノードは、ポート 7777 で listen を行い、TCPIPClientOutput ノードからの接続を受け入れます。
- TCPIPServerSimulation フローは、<ServerUpdate>OK</ServerUpdate> を追加してメッセージを修正し、メッセージをポート 7777 に返送します。
- TCPIPAsyncIn メッセージ・フロー内の TCPIPClientInput ノードは、データを受信します。
TCPIPClientInput ノードは、接続に関連付けられている応答 ID から WebSphere MQ ReplyToQ プロパティーをリセットします。
- メッセージは、MQReply ノードを通した伝搬によって戻されます。
- 「デキュー」をクリックします。
- 「詳細プロパティー」パネルで「メッセージの取得」をクリックします。
- 次のようにして、更新後のメッセージが WebSphere MQ を介して正常に返送されたかどうかを調べます。
- XML 構造ビューを使って、「詳細プロパティー」パネルに応答メッセージを表示します。
- その応答メッセージを、エンキュー・イベントを介して事前に送信したメッセージと比較します。
エレメント <ServerUpdate>OK</ServerUpdate> が、メッセージ本体のヘッダー・セクションに追加されています。
上記のステップがすべて正常に完了したら、サンプルは完了です。
3 つのメッセージ・フロー内のノードを調べて、どのように結果が生じたかを確認します。
このサンプルは、メッセージ・フロー TCPIPSync および TCPIPServerSimulation を使用します。
サンプルを実行するには、次のようにします。
- このサンプルの非同期および同期のパーツは、同じポート番号を使用します。したがって、次のようにして、必ず同期サンプルの正しいフローをデプロイする必要があります。
- IBM Integration Toolkit で「統合ノード」ビューを選択します。
- TCPIPClientNodesSampleExecutionGroup を右クリックして、「削除」>「すべてのフローとリソース」をクリックします。
- TCPIPClientNodesSampleArchive.bar を選択してオープンします。
「準備」タブ上で、TCPIPAsyncIn および TCPIPAsyncOut メッセージ・フローをクリアし、TCPIPSync メッセージ・フローを選択します。TCPIPServerSimulation フローと TCPIPClientNodesSampleJavaProject がまだ選択されていることを確認します。
- 「ビルドと保存...」をクリックして、BAR ファイルを保存します。
- BAR ファイルを TCPIPClientNodesSampleExecutionGroup にドラッグします。
- 以下のオブジェクトがデプロイされていることを確認します。
- TCPIPSync メッセージ・フロー
- TCPIPServerSimulation メッセージ・フロー
- TCPIPClientNodesSampleJavaProject
- 「アプリケーション開発」ビューで、TCPIPClientNodesSampleFlowProject を展開します。
- 「フロー・テスト」ディレクトリーを展開し、TCPIPSyncTest.mbtest をダブルクリックして、テスト・クライアントでメッセージを開きます。
「エンキュー」をクリックします。
- 「詳細プロパティー」パネルで「メッセージの送信」をクリックします。
以下のイベントが発生します。
- WebSphere MQ の要求メッセージが、TCPIP_SYNC_IN キュー上に置かれます。
この要求は、TCPIPSync メッセージ・フローによって読み取られます。
- ポート 7777 上の TCPIPClientOutput ノードを使用して、メッセージが送信されます。
非同期モデルとは違って ReplyToQ は、明示的保存の必要はありません。なぜならこれは、この同期フローをたどるメッセージ・ツリー内では未変更のままになるからです。
- TCPIPClientReceive ノードは、サーバーからの応答を待機します。
- TCPIPServerSimulation フロー内の TCPIPServerInput ノードは、ポート 7777 で listen を行い、TCPIPClientOutput ノードからの接続を受け入れます。
- TCPIPServerSimulation フローは、<ServerUpdate>OK</ServerUpdate> を追加してメッセージを修正し、メッセージをポート 7777 に返送します。
- TCPIPSync メッセージ・フロー内の TCPIPClientReceive ノードは、データを受信します。
このノードの「結果」タブ上で、応答メッセージは、オリジナルのメッセージ内に応答エレメントとして明示的に組み込まれます。
- メッセージは、MQReply ノードを通した伝搬によって戻されます。
- 「デキュー」をクリックします。
- 「詳細プロパティー」パネルで「メッセージの取得」をクリックします。
- 次のようにして、更新後のメッセージが WebSphere MQ を介して正常に返送されたかどうかを調べます。
- XML 構造ビューアーを使って、「詳細プロパティー」パネルに応答メッセージを表示します。
- そのメッセージを、エンキュー・イベントを介して事前に送信したメッセージと比較します。
応答メッセージ全体が、オリジナルの Header、SaleList、および Trailer エレメントの後に続けて、メッセージ内に組み込まれた <Response> エレメントとして表示されます。
この応答メッセージを展開すると、エレメント <ServerUpdate>OK</ServerUpdate> が、メッセージ本体のヘッダー・セクションに追加されています。
上記のステップがすべて正常に完了したら、サンプルは完了です。
2 つのメッセージ・フロー内のノードを調べて、どのように結果が生じたかを確認します。
どの TCPIP ノードでも、「拡張機能」タブ上にストリーム制御オプションが入っています。
以下に、TCPIP Client ノード・サンプルでストリーム制御プロパティーがどのように設定されているかの概要を詳しく示してあります。
TCPIPAsyncOut メッセージ・フロー
- TCPIPClientOutput ノード
- 「入力ストリームの変更」プロパティーは未変更のままになっています。
- 「出力ストリームの変更」プロパティーは、メッセージ・フロー内でこのノードの後に続くノードで使用するために予約されています。
他のフロー・インスタンスは、他のストリームが解放されない限りこのストリームを使用できません。
TCPIPAsyncIn メッセージ・フロー
- TCPIPClientInput ノード
- 「入力ストリームの変更」プロパティーは未変更のままになっています。
- 「出力ストリームの変更」プロパティーは解放されます。
このストリームはもう利用されません。したがって、解放されてプールに戻されます。
TCPIPSync メッセージ・フロー
- TCPIPClientOutput ノード
- 「入力ストリームの変更」プロパティーは未変更のままになっています。
- 「出力ストリームの変更」プロパティーは、メッセージ・フロー内でこのノードの後に続くノードで使用するために予約されており、フローの最後で解放されます。
TCPIPSync メッセージ・フローは、TCPIPAsyncOut メッセージ・フローとは異なるやり方で機能を稼働します。つまり、TCPIPSync メッセージ・フローは、入力および出力ごとに別々のサブフローではなく、単一のフローですべての処理 (入力および出力) を実行します。
結果として、出力接続の開放時に、明示的に構成を行うことができます。
- TCPIPClientReceive ノード
- 「入力ストリームの変更」プロパティーは未変更のままになっています。
- 「出力ストリームの変更」プロパティーは未変更のままになっています。
このストリームは、TCPIPClientOutput ノード内で構成します。TCPIPClientReceive ノード内でこのストリームを明示的に解放する必要はありません。
TCPIPServerSimulation メッセージ・フロー
- TCPIPServerInput ノード
- 「入力ストリームの変更」プロパティーは、予約済みになっていて、フローの終了地点で解放されます。
処理が終了しない限り、新規のクライアントはこのストリームに接続できません。
- 「出力ストリームの変更」プロパティーは未変更になります。
- TCPIPServerOutput ノード
- 「入力ストリームの変更」プロパティーは未変更のままになっています。
このプロパティーを変更する必要はありません。なぜなら、このストリームを処理する方法は、TCPIPServerInput ノードですでに構成済みだからです。
- 「出力ストリームの変更」プロパティーは未変更のままになっています。
サンプルのホームに戻る