メッセージ・フローによって処理する Web サービス要求を受信するには、HTTPInput ノードを使用します。
このトピックには、以下のセクションが含まれています。
HTTPInput ノードを HTTPReply ノードおよび HTTPRequest ノードと共に使用すると、ブローカーは Web サービスの仲介者として機能でき、Web サービス要求を WebSphere® Message Broker Web サービス要求は、標準 HTTP (1.0 または 1.1) フォーマット、または HTTP over SSL (HTTPS) フォーマットのどちらかで受け取ることができます。 HTTP 要求と HTTPS 要求のどちらを処理するか選択するには、「HTTPS の使用」プロパティーを設定します。
メッセージ・フローに HTTPInput ノードを組み込む場合には、同じフローに HTTPReply ノードも組み込むか、HTTPReply ノードが組み込まれた別のノードにメッセージを受け渡す必要があります (例えば、MQOutput ノードを介して、MQInput ノードで始まる 2 番目のフローへ)。 後者の場合、クライアントからの要求と、クライアントへの応答は、LocalEnvironment に保管された要求 ID で調整されます。
HTTPInput ノードは、Web サービス・クライアントからのメッセージを受信すると、適切なパーサーを開始して、メッセージのヘッダーおよび本文を解釈し、メッセージ・フローが内部で使用するメッセージ・ツリーを作成します。 このノードは入力メッセージの固有 ID を作成し、これを LocalEnvironment ツリーの LocalEnvironment.Destination.HTTP.RequestIdentifer に、24 バイトのバイナリー配列の形で保管します。 この値は HTTPReply ノードによって使用されます。この値には、一切変更を加えてはなりません。
HTTP メッセージは常に持続性を持たず、関連する順序はありません。
HTTP メッセージは、非トランザクションです。 ただし、メッセージ・フローがデータベースまたは WebSphere MQ キューなどの別の外部リソースと対話する場合、それらの対話はトランザクションで実行されます。 HTTPInput ノードでは、メッセージ・フローの終了方法、およびエラー処理に対する構成方法 (例えば、障害の発生したターミナルを接続する方法) に応じて、コミットまたはロールバックが提供されます。 メッセージ・フローが HTTPInput ノードによってロールバックされる場合、障害メッセージが生成され、クライアントに戻されます。 障害のフォーマットは、「障害フォーマット」プロパティーによって定義されます。
このメッセージ・フローのダウンストリームで例外が発生し、キャッチされずにノードに戻された場合、このノードはクライアントへのエラー応答を構成します。 このエラーは例外から派生し、エラーのフォーマットは「障害フォーマット」プロパティーによって定義されます。
HTTPInput ノードで開始するメッセージ・フローに出力ノードを組み込む場合、その出力ノードはサポートされる出力ノードのいずれかにできます (ユーザー定義の出力ノードも含む)。Web サービス・クライアントからメッセージを受け取り、サポートされるトランスポートすべてを使用してブローカーに接続するクライアント用のメッセージを生成する、メッセージ・フローを作成できます。必要な任意の変換を提供するよう、ブローカーに要求するようにメッセージ・フローを構成できます。
サブフローとして使用するメッセージ・フローを作成する場合には、標準入力ノードを使用することはできず、Input ノードを最初のノードとして使用して、サブフロー用の In ターミナルを作成する必要があります。
ご使用のメッセージ・フローが Web サービス要求を受信しない場合には、他の任意の入力ノードを使用してください。
HTTPInput ノードはパレットの HTTP ドロワーに入っていて、ワークベンチ内では次のアイコンによって表されます。
HTTP または HTTPS メッセージを受け入れるすべてのメッセージ・フローで、HTTPInput ノードを使用することができます。 最も一般的な例は、Web サービスをインプリメントするメッセージ・フローです。
Web サービス・アプリケーションについて詳しくは、Web サービス・アプリケーションでの作業を参照してください。
HTTPInput ノードは、HTTP POST および HTTP GET をサポートします。 HTTP GET の使用可能化について詳しくは、HTTPRequest ノードを参照してください。
/Joe /Joe/Mary /Joe/* /*このフォーマットは、他のノードが要求にマッチングしない場合は、メッセージを取得します。したがって、要求 http://localhost:777/Joe/Sally の場合は、Joe/* にマッチングします。 この要求がどの URL セレクターにもマッチングせず、入力ノードに /* を指定していない場合は、HTTPInput ノードは、発信元へ応答を返します。以下に例を示します。
<html> <head> <title>WebSphere MQ Integrator error report </title> </head> <body> <h1>HTTP Status 404 - Resource Not Found</h1> URI /soap does not map to any message flow in broker VCP1BRK <h3>WebSphere MQ Integrator 500</h3> </body> </html>
/* の URL を使用すれば、HTTPInput ノードの URL とのマッチングに失敗した任意の要求をキャッチできます。これによって、応答メッセージを送信し、他の適切なアクションを取ることができます。
ブローカーを構成してポートを使用する必要があります (デフォルトは 7080)。HTTP リスナーは、HTTP ノードまたは Web サービス・サポートが含まれるメッセージ・フローの開始時に、ブローカーによって
始動します。
要求が着信すると、リスナーは WebSphere MQ メッセージを通して HTTPInput ノードへ要求を送信します。
HTTP リスナーは、オペレーティング・システムでサポートされているインターネット・プロトコル・バージョン 6 (IPv6) アドレスおよびインターネット・プロトコル・バージョン 4 (IPv4) アドレスで listen します。Windows® および HPUX プラットフォームで IPv6 の listen を有効にするには、環境変数 _JAVA_OPTIONS を -Djava.net.preferIPv4Stack=false に設定します。
mqsichangetrace コマンドを使用して、HTTP リスナーのトレース情報を収集することができます。 ログを処理するには、修飾子を httplistener に設定して、 mqsireadlog コマンドを使用します。
HTTPInput ノードは、Out ターミナルに正常に取り出される各メッセージをルーティングします。 メッセージの妥当性検査が失敗すると、メッセージは Failure ターミナルにルーティングされます。 ノードをこのターミナルに接続し、この状態を処理することができます。 Failure ターミナルに接続していない場合、メッセージは破棄され、「最大クライアント待機時間」が満了して、TCP/IP リスナーはエラーをクライアントに戻します。 メッセージが Failure ターミナルにルーティングされるその他の状態は存在しません。
メッセージ・フロー内でさらに例外がスローされた後、このノードによってメッセージがキャッチされる場合、メッセージは Catch ターミナルにルーティングされます。 Catch ターミナルに接続していない場合、メッセージは破棄され、「最大クライアント待機時間」が満了して、TCP/IP リスナーはエラーをクライアントに戻します。
HTTPInput ノードのインスタンスをメッセージ・フローに入れると、それを構成することができます。メッセージ・フロー・ノードの構成を参照してください。 ノードのプロパティーが、「プロパティー」ビューに表示されます。ノードのプロパティーを「プロパティー」ダイアログに表示するには、ノードをダブルクリックするか、またはノードを右クリックしてから「プロパティー」をクリックします。
HTTPInput ノードのターミナルについては、次の表に説明されています。
ターミナル | 説明 |
---|---|
Failure | エラーが発生した場合にメッセージがルーティングされる出力ターミナル。 |
Out | 正常に取り出された場合に、メッセージがルーティングされる出力ターミナル。 |
Catch | 例外がダウンストリームでスローされ、ノードによってキャッチされた場合に、メッセージがルーティングされる出力ターミナル。 |
以下の表は、ノード・プロパティーについて説明しています。 M の見出しの列は、プロパティーが必須 かどうかを示します (デフォルトが定義されていない場合に値を入力することが必要なら、アスタリスクのマークが付きます)。 C の見出しの列は、プロパティーが構成可能 かどうかを示します (メッセージ・フローを BAR ファイルに追加してデプロイするとき、値を変更できます)。
HTTPInput ノードの「説明」プロパティーについては、次の表に説明されています。
プロパティー | M | C | デフォルト | 説明 |
---|---|---|---|---|
ノード名 | いいえ | いいえ | ノード・タイプ、HTTPInput | ノードの名前。 |
簡略説明 | いいえ | いいえ | ノードの簡単な説明 | |
詳細説明 | いいえ | いいえ | メッセージ・フロー内のノードの目的を説明するテキスト |
HTTPInput ノードの「基本」プロパティーについては、次の表に説明されています。
プロパティー | M | C | デフォルト | 説明 |
---|---|---|---|---|
URL のパス接尾部 | はい | はい | このプロパティーは、Web サービス要求が取り出される位置を識別します。 URL 全体を使用するのではありません。必要とする URL が http://<hostname>[:<port>]/[<path>] の場合、/<path> または /<path fragment>/* を指定します。* はワイルドカードで、ここには何でも指定することができます。 | |
HTTPS の使用 | いいえ | はい | 選択されていない | このプロパティーは、ノードがセキュア HTTP を受け入れるかどうかを識別します。 ノードがセキュア HTTP を受け入れる予定の場合、このチェック・ボックスを選択します。 |
HTTPInput ノードの「入力メッセージの構文解析」プロパティーについては、次の表に説明されています。
プロパティー | M | C | デフォルト | 説明 |
---|---|---|---|---|
メッセージ・ドメイン | いいえ | いいえ | 着信メッセージの構文解析に使用されるドメイン。リストから使用するパーサーの名前を選択します。
|
|
メッセージ・セット | いいえ | いいえ | 着信メッセージが定義されているメッセージ・セットの名前または ID。選択可能なすべてのメッセージ・セットがドロップダウン・リストにあります。 MRM または IDOC パーサーを使用している場合、使用するメッセージ・セットを選択します。ドメインとして MRM または IDOC を選択すると、選択可能なメッセージ・セットがこのリストに取り込まれます。 XML、XMLNS、XMLNSC、JMS、MIME、および BLOB パーサーの場合、「メッセージ・セット」フィールドはブランクのままにしてください。 |
|
メッセージ・タイプ | いいえ | いいえ | 着信メッセージの名前。 MRM パーサーを使用する場合は、「メッセージ・タイプ」のリストから、メッセージ・タイプを選択します。 このリストには、選択したメッセージ・セットで定義されたメッセージが取り込まれます。 XML、XMLNS、XMLNSC、JMS、IDOC、MIME、および BLOB パーサーの場合、「メッセージ・タイプ」はブランクのままにしてください。 |
|
メッセージ形式 | いいえ | いいえ | 着信メッセージの物理フォーマットの名前。 MRM または IDOC パーサーを使用する場合は、「メッセージ形式」のリストから、メッセージの形式を選択します。 このリストには、このメッセージ・セット用に定義されたすべての物理形式が掲載されます。 XML、XMLNS、XMLNSC、JMS、MIME、および BLOB パーサーの場合、「メッセージ形式」はブランクのままにしてください。 |
HTTPInput ノードのパーサー・オプションのプロパティーについては、次の表に説明されています。
プロパティー | M | C | デフォルト | 説明 |
---|---|---|---|---|
構文解析のタイミング | いいえ | いいえ | 要求時 | このプロパティーは、入力メッセージを構文解析する時を制御します。
有効な値は、「要求時」、「即時」、および「完全」です。
デフォルトで、このプロパティーは「要求時」に設定されます。これにより、部分構文解析によって構文解析されるまで、妥当性検査が遅延します。この値を「即時」に変更すると、部分構文解析はオーバーライドされて、メッセージ内のすべてのものが構文解析および妥当性検査されます。ただし、構成が「選択」または「メッセージ」に指定された複合タイプで、この時点で解決できずに、妥当性検査の失敗を引き起こすものは除きます。この値を「完全」に変更すると、部分構文解析はオーバーライドされて、メッセージ内のすべてのものが構文解析および妥当性検査されます。 |
XMLNSC コンパクト・パーサーを XMLNS ドメインに使用 | いいえ | いいえ | 選択されていない | このプロパティーは、XMLNS ドメイン内のメッセージに XMLNSC コンパクト・パーサーを使用するかどうかを制御します。 このプロパティーを設定した場合に、入力 MQRFH2 ヘッダーまたは「入力メッセージの構文解析」プロパティー「メッセージ・ドメイン」を XMLNS にすると、出力ターミナルに接続されているノードの XMLNSC の下にメッセージ・データが表示されます。 |
混合内容の保存 | いいえ | いいえ | 選択されていない | このプロパティーは、XMLNSC パーサーが入力メッセージ内に混合テキストを検出したとき、メッセージ・ツリー内にエレメントを作成するかどうかを制御します。 チェック・ボックスを選択すると、混合テキスト用のエレメントが作成されます。 このチェック・ボックスのチェックを外した場合、混合テキストは無視されて、エレメントは作成されません。 |
コメントの保存 | いいえ | いいえ | 選択されていない | このプロパティーは、XMLNSC パーサーが入力メッセージ内にコメントを検出したとき、メッセージ・ツリー内にエレメントを作成するかどうかを制御します。 チェック・ボックスを選択すると、コメント用のエレメントが作成されます。 このチェック・ボックスのチェックを外した場合、コメントは無視されて、エレメントは作成されません。 |
処理命令の保存 | いいえ | いいえ | 選択されていない | このプロパティーは、XMLNSC パーサーが入力メッセージ内に処理命令を検出したとき、これらのメッセージ・ツリー内にエレメントを作成するかどうかを制御します。 チェック・ボックスを選択すると、処理命令用のエレメントが作成されます。 このチェック・ボックスのチェックを外した場合、処理命令は無視されて、エレメントは作成されません。 |
HTTPInput ノードの「エラー処理」プロパティーについては、次の表に説明されています。
プロパティー | M | C | デフォルト | 説明 |
---|---|---|---|---|
最大クライアント待機時間 (秒) | はい | いいえ | 180 | Web サービス・クライアントから入力メッセージを受信した TCP/IP リスナーが、メッセージ・フローで HTTPReply ノードからの応答を待機する時間の長さを秒単位で指定します。 この時間内に応答を受信した場合、リスナーはその応答をクライアントに伝搬します。この時間内に応答を受信しなかった場合、リスナーはタイムアウトの期限が切れたことを示す SOAP 障害メッセージをクライアントに送信します。有効範囲は、0 (無期限待機を表す) から (231)-1 です。 |
障害フォーマット | いいえ | はい | SOAP 1.1 | クライアントに戻されるすべての HTTP エラーのフォーマット。 有効な値は、「SOAP 1.1」、「SOAP 1.2」、および「HTML」です。 |
HTTPInput ノードの「妥当性検査」プロパティーについては、次の表に説明されています。 メッセージがノードの Failure ターミナルに伝搬される場合には、妥当性検査は行われません。 詳細については、メッセージの妥当性検査および妥当性検査プロパティーを参照してください。
.
プロパティー | M | C | デフォルト | 説明 |
---|---|---|---|---|
妥当性検査 | いいえ | はい | None | このプロパティーは、妥当性検査を行うかどうかを制御します。 有効な値は、「なし」、「内容と値」、および「内容」です。 |
失敗時の処置 | いいえ | いいえ | 例外 | このプロパティーは、妥当性検査が失敗した場合の動作を制御します。 「妥当性検査」を「内容」または「内容と値」に設定した場合にのみ、このプロパティーを設定できます。有効な値は、「ユーザー・トレース」、「ローカル・エラー・ログ」、「例外」、および「例外リスト」です。 |
すべての値制約を含める | いいえ | いいえ | 選択されている | このプロパティーは編集できません。 基本値制約検査が「内容と値」妥当性検査に含まれます。 |
修正 | いいえ | いいえ | None | このプロパティーは編集できません。 |
HTTPInput ノードの「拡張」プロパティーについては、次の表に説明されています。
プロパティー | M | C | デフォルト | 説明 |
---|---|---|---|---|
宛先リストの設定 | いいえ | いいえ | 選択されている | このプロパティーは、メソッド・バインディング名をラベル宛先リストへの経路に追加するかどうかを指定します。このチェック・ボックスを選択すると、メソッド・バインディング名が追加され、メッセージ・フローの中で HTTPInput ノードの後に、RouteToLabel ノードを使用できるようになります。 |
ラベル接頭部 | いいえ | いいえ | なし | ラベルにルーティングするときに、メソッド名に追加される接頭部。 同じメッセージ・フローに複数の WebSphere Message Broker 入力ノードを含める場合は、対応するラベル・ノードの競合を避けるため、ラベル接頭部を追加します。 デフォルトでは、ラベル接頭部はないため、メソッド名とラベル名は同じです。 |