特定の Web サービス・シナリオのノードの構成

このトピックでは、特定の状態を処理するためにメッセージ・フローでノードを構成する仕方についての 詳細が提供されています。

返信用のHTTP 状況コードの設定
デフォルトの HTTP 状況コードは 200であり、OK を意味しています。 これは、いくつかの方法で変更できます。
  • プロパティー「入力または応答から HTTP ヘッダーを生成する (Generate default HTTP headers from input or response)」が選択されている場合、 HTTPReply ノードは状況コード用の HTTP 応答ヘッダーをスキャンします。 応答ヘッダーは HTTPRequest ノードによって作成され、 Web サービスからの応答の一部として提供される HTTP ヘッダーを表します。 HTTPReply ノードは状況コードを検索し、独自の状況コードをこの値に設定します。
  • LocalEnvironment にある Destination.HTTP.ReplyStatusCode フィールドで状況コードを設定することができます。 設定する場合、設定する値は応答ヘッダーから検索されたいかなる設定値もオーバーライドします。

Compute ノードにある特定のヘッダー (他のすべての設定値をオーバーライドする出力メッセージの HTTPReplyHeader セクションにある X-Original-HTTP-Status-Code)で返信状況も設定することができますが、 このためには LocalEnvironment の内容を使用することをお勧めします。

LocalEnvironment.Destination.HTTP.RequestIdentifier を使用する
HTTPInput ノードが入力要求メッセージを受け取る場合、 LocalEnvironment フィールドの Destination.HTTP.RequestIdentifier を、 要求を送った Web サービス・クライアントを識別する固有値に設定します。 適切な場合、この値を参照して、他の場所にその値を保管することができます。

たとえば、既存の WebSphere MQ アプリケーションと対話するメッセージ・フローのペアを設計する場合 (Web サービス例のシナリオの処理で説明されているように)、 要求フローにこの値を保管し、返信フローでそれを復元して、適切なクライアントが返信を受け取るよう保証することができます。 そうする場合、データを変更してはならず、データを BLOB として保存する必要があります。

HTTPReply ノードは、LocalEnvironment からこの値を抽出し、 特定のクライアントに送られるように、返信をセットアップします。

HTTPInput ノードと HTTPReply ノードの両方が含まれているメッセージ・フローを設計する場合、 値は HTTPInput ノードによって LocalEnvironment 内に設定されますが、 HTTPReply ノードはそれを使用しません。 したがって、メッセージ・フローが同じフローに両方のノードおよび Compute ノードを含んでいる場合、 メッセージ・ツリーのどのコンポーネントが Compute ノード (「Compute モード」 プロパティー)によって 入力メッセージから出力メッセージにコピーされるかを指定するとき、LocalEnvironment ツリーを含む必要はありません。

HTTPRequest ノードの URL の動的設定
HTTPRequest ノードでプロパティー「デフォルト Web サービス URL (Default Web Service URL)」を設定して、ウェブ・サービス要求用の宛先 URL を決定できます。 値セットをプロパティーにオーバーライドするために、メッセージ・フロー内の HTTPRequest ノードの前に、 Compute ノードを構成することができます。 LocalEnvironment.Destination.HTTP.RequestURL に URL ストリングを保管する ESQL をコーディングします。これは HTTPRequest ノードによって検索され、ノード・プロパティー値の代わりに使用されます。

Compute ノードにある要求メッセージ (他のすべての設定値をオーバーライドする)の HTTPRequestHeader セクションにある特定のヘッダー X-Original-HTTP-URL で要求 URL も設定することができますが、 このためには LocalEnvironment の内容を使用することをお勧めします。

HTTPReply ノードのための「入力または応答からデフォルト HTTP ヘッダーを生成 (Generate default HTTP headers from input or response)」の設定
HTTPReply ノードのプロパティー・ダイアログで 「入力または応答からデフォルト HTTP ヘッダーを生成 (Generate default HTTP headers from input or response)」チェック・ボックスを選択する場合、 ノードには Web サービス・クライアントに送られる応答のヘッダーの最小セットが含まれています。入力として受け取るメッセージ内の HTTPResponseHeader にある任意のヘッダーも含まれています。

HTTPReply ノードは常に Content-Length ヘッダーを再書き込みし (「入力または応答からデフォルト HTTP ヘッダーを生成 (Generate default HTTP headers from input or response)」チェック・ボックスのチェックをクリアにした場合でさえ)、 内容が正しいことを保証します。

他のすべてのヘッダーは HTTPResponseHeader からコピーされます。 この後に、Content-Type ヘッダーがない場合、text/xml;charset=utf-8 の値とともに追加されます。

HTTPReplyHeader セクションが、HTTPReply ノードによって受け取られるメッセージ内に存在し、 HTTPReply ノードの Output ターミナルが接続されている場合、 HTTPReplyHeader セクションは任意の変更された値または追加された値で更新されます。

HTTPRequest ノードのための「「入力からデフォルト HTTP ヘッダーを生成 (Generate default HTTP headers from input)」の設定
HTTPRequest ノードのプロパティー・ダイアログで 「入力からデフォルト HTTP ヘッダーを生成 (Generate default HTTP headers from input)」チェック・ボックスを選択する場合、 ノードには サーバーに送られる要求のヘッダーの最小セットが含まれています。 ノードには、入力として受け取るメッセージ内の HTTPInputHeader にある任意のヘッダーも含まれています。

HTTPRequest ノードは常に Content-Length ヘッダーを再書き込みし (「入力からデフォルト HTTP ヘッダーを生成 (Generate default HTTP headers from input)」チェック・ボックスのチェックをクリアにした場合でさえ)、 内容が正しいことを保証します。

以下を除くすべてのヘッダーは、HTTPInputHeader からコピーされます。

  • Host ヘッダー (要求 URL か、着信するメッセージの HTTPRequestHeader セクションのどちらかを 基にして設定される)
  • Content-Length ヘッダー (すべてのケースで再書き込みされる)

いくつかのヘッダーは、着信する HTTPRequest または HTTPInput ヘッダー内で検出されない場合、 デフォルト値で生成されます。

  • SOAPAction ("" に設定される)
  • Host (このメッセージで使用される要求 URL を基にして設定される) これは値となることができます。
  • Content-Type (text/xml; charset=utf-8 に設定される)

ノードによって受け取られるメッセージの HTTPRequestHeader にある任意のヘッダーは、 同じメッセージの HTTPInputHeader にもある同じ名前のヘッダーをオーバーライドします。 受け取ったメッセージに HTTPRequestHeader が存在する場合、 HTTPRequestHeader は任意の変更された値または追加された値で更新されます。

関連概念
WebSphere MQ Web Services Transport
Web サービス記述言語 (WSDL) の生成

関連タスク
メッセージ・フローの作成
Web サービス例のシナリオの処理
メッセージ・フロー・アプリケーションのデプロイ
デプロイメントの結果の検査

関連資料
HTTPInput ノード
HTTPReply ノード
HTTPRequest ノード