HTTP フローでの作業

HTTP メッセージ・フローを使用して Web サービスと対話する場合には、この情報をお読みください。このトピックは、続く Web サービスのシナリオ セクションと共に読むと便利です。

HTTPS
HTTPS の使用方法については、SSL 認証のインプリメント を参照してください。
返信用のHTTP 状況コードの設定
デフォルトの HTTP 状況コードは 200 であり、正常を示しています。異なる状況コードが戻されるようにするには、以下のいずれかのアクションを実行します。
  • LocalEnvironment ツリーのフィールド Destination.HTTP.ReplyStatusCode (相関名 OutputLocalEnvironment) で状況コードを設定する。このフィールドにより、HTTPResponseHeader ヘッダーで設定された状況コードがオーバーライドされます。 最大の柔軟性が得られるので、このアクションが好ましいオプションと言えます。
  • HTTPReplyHeader ヘッダーのフィールド X-Original-HTTP-Status-Code で状況コードを設定する。
  • HTTPResponseHeader ヘッダーのフィールド X-Original-HTTP-Status-Code で状況コードを設定する。フローで HTTPRequest ノードを HTTPReply ノードの前に含める場合には、通常このオプションが役立ちます。HTTPResponseHeader ヘッダーが作成されるためです。このシナリオでは、HTTPResponseHeader ヘッダーが論理ツリーに作成されており、別の Web サービスからの応答にある HTTP ヘッダーを表します。HTTPReply ノードで「返信または応答からデフォルト HTTP ヘッダーを生成」プロパティーを選択した場合、応答メッセージが作成される際の応答ヘッダーの値がデフォルト値として設定されます。
LocalEnvironment.Destination.HTTP.RequestIdentifier の使用
HTTPInput ノードが入力要求メッセージを受け取る場合、 LocalEnvironment フィールドの Destination.HTTP.RequestIdentifier を、 要求を送った Web サービス・クライアントを識別する固有値に設定します。 適切な場合、この値を参照して、他の場所にその値を保管することができます。

例えば、(ブローカーによる既存の Web サービスの呼び出し に示されているように) 既存の WebSphere® MQ アプリケーションと 対話するメッセージ・フローのペアを設計する場合、ID 値を要求フローに保管し、応答フローで復元することにより、その応答を適切なクライアントが受け取ることを保証できます。この手法を使用する場合、データを変更してはならず、データを BLOB として保存する必要があります。

HTTPReply ノードは、LocalEnvironment ツリーから ID 値を抽出し、特定のクライアントに送られるように、返信をセットアップします。しかし HTTPInput ノードのないフローで HTTPReply ノードを使用し、このフィールドが削除されたか、正しく設定されていない場合には、メッセージ BIP3143S が出されます。

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

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

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

HTTPReply ノードのための「返信または応答からデフォルト HTTP ヘッダーを生成」の設定
HTTPReply ノードのプロパティーで「返信または応答からデフォルト HTTP ヘッダーを生成」を選択する場合、ノードには Web サービス・クライアントに送られる応答のヘッダーの最小セットが含まれています。
ヘッダーを明示的に設定するには、HTTPReplyHeader ヘッダー内に作成します。 例えば、Compute ノードが XMLNS ドメイン内でメッセージを伝搬し、Content-Type を変更する場合、以下のようにします。
CALL CopyMessageHeaders();
SET OutputRoot.HTTPReplyHeader."Content-Type" = 'text/xml';
SET OutputRoot.XMLNS = InputRoot.XMLNS;

MIME ドメインで作業しているのでない限り、ContentType プロパティーを使用して Content-Type を設定しないでください。 ContentType プロパティーは、MIME 内で使用される Content-Type の値を設定することを特に意図しています。

要求で使用される HTTP ヘッダーの完全セットは、以下のステップで定義されるアルゴリズムを使用してヘッダーを選択することで構築されます。
  1. HTTPReplyHeader ヘッダー内の任意のヘッダーを選択します。
  2. Content-Type ヘッダーが未定義の場合、ContentType プロパティーの空でない値を使用して作成します。
  3. HTTPResponseHeader ヘッダー内の任意のヘッダーを選択します (HTTPResponseHeader ヘッダーは HTTPRequest ノードからの戻りで伝搬したものです)。
  4. Content-Type ヘッダーが未定義の場合、デフォルト値 text/xml; charset=utf-8 を使用して作成します。
  5. Content-Length ヘッダーを作成または上書きします。
重要: HTTPReply ノードは、「応答からデフォルト HTTP ヘッダーを生成」のチェックをクリアにした場合でも、常に Content-Length ヘッダーを再書き込みします。このアクションによって、内容が正しいことが確認されます。

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

HTTPRequest ノードのための「入力からデフォルト HTTP ヘッダーを生成」の設定
HTTPRequest ノードのプロパティーで「入力からデフォルト HTTP ヘッダーを生成」を選択する場合、ノードにはサーバーに送られる要求のヘッダーの最小セットが含まれています。
ヘッダーを明示的に設定するには、HTTPRequestHeader ヘッダー内に作成します。例えば、XMLNS ドメイン内でメッセージを伝搬する Compute ノードが Content-Type を変更する場合、以下のようにします。
CALL CopyMessageHeaders();
SET OutputRoot.HTTPRequestHeader."Content-Type" = 'text/xml';
SET OutputRoot.XMLNS = InputRoot.XMLNS;
MIME ドメインで作業しているのでない限り、ContentType プロパティーを使用して Content-Type を設定しないでください。 ContentType プロパティーは、MIME 内で使用される Content-Type の値を設定することを特に意図しています。
要求で使用される HTTP ヘッダーの完全セットは、以下のステップで定義されるアルゴリズムを使用してヘッダーを選択することで構築されます。
  1. 要求 URL か、着信するメッセージの HTTPRequestHeader ヘッダー・セクションのどちらかを基にして、Host ヘッダーを設定します。
  2. HTTPRequestHeader ヘッダー内の任意のヘッダーを選択します。
  3. Content-Type ヘッダーが未定義の場合、ContentType プロパティーの空でない値を使用して作成します。
  4. HTTPInputHeader ヘッダーから任意のヘッダーを選択します (HTTPInputHeader ヘッダーは HTTPInput ノードによって自動的に作成されます)。
  5. Content-Type ヘッダーが未定義の場合、デフォルト値 text/xml; charset=utf-8 を使用して作成します。
  6. SOAPAction ヘッダーが未定義の場合、デフォルト値 '' を使用して作成します。
  7. Content-Length ヘッダーを作成または上書きします。
重要: HTTPRequest ノードは、「入力または応答からデフォルト HTTP ヘッダーを生成」のチェックをクリアにした場合でも、常に Content-Length ヘッダーを再書き込みします。このアクションによって、内容が正しいことが確認されます。

受け取ったメッセージに HTTPRequestHeader ヘッダーが存在する場合、HTTPRequestHeader ヘッダーは任意の変更された値または追加された値で更新されます。

HTTP に関する問題がある場合の HTTPListener トレースの収集
HTTP に関する問題がある場合には、以下のようにして HTTPListener をトレースできます。
  1. mqsichangetrace コマンドを使用して、以下のオプションを指定してトレースを開始します。
    mqsichangetrace component -t -b
    ここで、component はブローカー名です。
  2. mqsireadlog コマンドを使用し、-b パラメーターに HTTPListener 修飾子を指定して、HTTPListener トレース・ログを取り出します。
  3. mqsiformatlog コマンドを使用してトレース・ログをフォーマット設定して、その内容を表示できるようにします。
関連概念
WebSphere MQ Web Services Transport
WSDL の生成
関連タスク
メッセージ・フローの作成
デプロイ
デプロイメントの結果の検査
関連資料
HTTPInput ノード
HTTPReply ノード
HTTPRequest ノード
特記事項 | 商標 | ダウンロード | ライブラリー | サポート | フィードバック

Copyright IBM Corporation 1999, 2009Copyright IBM Corporation 1999, 2009.
最終更新 : 2009-02-20 12:42:56

ac20450_