WebSphere MQ Web Services Transport

WebSphere MQ Web Services Transport は、 メッセージング用に HTTP プロトコルを使用する Web サービス・クライアントに接続するサービスです。

Web サービス・クライアントは、他のアプリケーションと通信するために、 非持続で非トランザクションのメッセージングを使用します。WebSphere Business Integration Message Broker は、これらのクライアントが、ブローカー内のメッセージ・フローを介して、 他のアプリケーションと通信するためのサポートを提供します。

クライアントは、サービス・プロバイダーまたはサービス・リクエスターのいずれかです。 サービス・プロバイダーは、WSDL で定義されたサービスをレジストリーにパブリッシュします。 サービス・リクエスターは、サービス・レジストリーに照会して、これらのサービスがある場所およびこれらのサービスにバインドする方法を含め、 使用可能なサービスに関する情報を検索します。

ブローカーと通信できるということは、Web サービス・クライアントが、 サポートされている他のプロトコルおよびトランスポートを使用するアプリケーションと通信できるということを意味します (メッセージ・フローがこの機能を提供するように構成されている場合)。

詳細については、 developerWorks Web サイトで、Web services のリンクをたどってください。

Web サービスのメッセージ形式

このトランスポートを介して受け渡しされるメッセージは XML 形式であり、 これによってプラットフォームからの独立が可能になります。 特定の操作やエラー状態 (SOAP 障害) を定義する XML コンテンツは、 SOAP 標準によって定義されます。 送達が保証されているわけではないので、 アプリケーションはシステム障害またはネットワーク障害時のリカバリーを備えていなければなりません。

メッセージには、そのタイプに見合った以下のコンポーネントが含まれています。

コマンド・ストリング
要求メッセージには、 コマンド POST と、その後に続く URL が含まれています。 コマンド・ストリングの末尾は、HTTP/1.0 です。
ステータス行
応答メッセージにはステータス行が含まれています。 先頭は HTTP/1.0 で、コードとテキストで要求が成功したか失敗したかを示します。 たとえば、200 OK、404 Not Found、500 Server Error などです。
ヘッダー
Web サービス・プロトコルが使用するヘッダーは、HTTP ヘッダーです。 これは、名前、その後のコロンとスペース (オプション) の文字、 およびその後のヘッダーの値 (内容) から構成されます。 各ヘッダーの後には CRLF 文字が続きます。 最終ヘッダーの後には CRLFCRLF が続きます。 これによって、ブランク行が作成されます。 この行の後に続くデータは、メッセージ本体のデータと解釈されます。 ヘッダーについては、Web サービス・ヘッダーで説明しています。
本文
メッセージ本体は、 メッセージの中のヘッダーの後 (つまり、 文字 CRLFCRLF の後) のデータです。 HTTPInput または HTTPRequest が受け取るインバウンド・メッセージの場合、 このデータは一般的にノード内のメッセージ・プロパティーの設定に従って構文解析されます。 アウトバウンド・メッセージの場合、データの構文解析は、 メッセージをメッセージ・ツリーからビット・ストリームへ構文解析する HTTPReply または HTTPRequest ノードが受信する、 「プロパティー (Properties)」フォルダー内のメッセージ・プロパティーの設定に従って行われるのが普通です。

たいていの場合、メッセージの本体は XML です。 しかし、インバウンド・メッセージの場合、 受信ノードが異なるフォーマットを処理するよう構成されており、 適切なパーサーが使用可能であるなら、異なるフォーマットを含めることも可能です。 アウトバウンド・メッセージの場合、 送信先の Web サービスが受け入れるあらゆる形式の本体を含めることができます。

Web サービス以外のコンポーネントによって生成されるエラー (404 Not Found など) により、 メッセージが HTML 形式になる場合があります。

HTTPInput ノードが入力要求を受信するとき、 あるいは HTTPRequest ノードが Web サービスからの応答を受信するときに、 ヘッダーと本体を含むビット・ストリームが構文解析され、 メッセージ・ツリーの中で表現されます。 ビット・ストリームは、 HTTPReply ノードによってクライアントへ応答が送信されるとき、 および HTTPRequest ノードによって Web サービスへ要求が送信されるときに、 パーサーによってメッセージ・ツリーの適切なパーツから作成されます。 これらのアクションの詳細については、個々のノードの説明を参照してください。

Web サービス・ヘッダー

Web サービス・クライアントまたは Web サーバーからメッセージを受信するとき、 そのメッセージを受信する HTTPInput または HTTPRequest ノードは、 HTTP ヘッダーを構文解析して、メッセージ・ツリー内にエレメントを作成する必要があります。 HTTPReply または HTTPRequest メッセージが Web サービス・クライアントまたは Web サーバーにメッセージを送信するとき、 これは HTTP ヘッダーを構文解析して、メッセージ・ツリーをビット・ストリームにする必要があります。

メッセージの HTTP ヘッダーは、処理するメッセージのタイプに応じて異なります。 メッセージ・フローで識別されるメッセージのタイプは 4 つあり、 それぞれに 1 つのパーサーが関連付けられています。

  1. 入力。 入力メッセージは、Web サービス・クライアントから送信されて、HTTPInput ノードで受信されます。 入力メッセージ内の HTTP ヘッダー (CRLFCRLF までのデータ (CRLFCRLF 自体も含む)) は、 HTTPInput パーサーによって構文解析され、 メッセージ・ツリーの中の相関名 HTTPInput の下に組み込まれます。 入力メッセージの中には、以下のテーブルに表示されるヘッダーが入っているものと期待されます。 他のヘッダーが入っている場合もあります。
    ヘッダー 内容
    Host クライアントがメッセージを送出するホスト名。 localhost
    Content-Length 入力メッセージの本体 (最後のヘッダーの後の CRLFCRLF に続く部分) の長さ (10 進)。 520
    Content-Type 本体データのタイプ。 text/xml; charset=utf-8
    SOAPAction   "" (空ストリング)
  2. 応答。 応答メッセージは、 対応する入力メッセージを送信した Web サービス・クライアントに対して、HTTPReply ノードから送信されます。 応答メッセージ内の Web サービス・ヘッダーは、 メッセージ・ツリーの中の相関名 HTTPReply の下に作成されます。これは、 メッセージ・ツリーのこの部分を構文解析してビット・ストリームにするパーサーの名前でもあります。 Compute ノードで独自の HTTPReply ヘッダーを作成することもできますし、 デフォルト値または入力メッセージの HTTPInput または HTTPRequest ツリーから取った値を使ってヘッダーを作成するよう、 HTTPReply ノードを構成することもできます。 HTTPReply ノードがデフォルトの HTTPReply ヘッダーを作成する場合、 このヘッダーの中には以下のテーブルに表示される Web サービス・ヘッダーと値が入っています。
    ヘッダー
    Content-Length (入力メッセージにあった場合) 応答メッセージ本体の計算された長さ (10 進)。
    Content-Type text/xml; charset=utf-8
  3. 要求。 要求メッセージは、HTTPRequest ノードによって、Web サーバーに送信されます。 このメッセージ内の HTTP ヘッダーは、 メッセージ・ツリーの中の相関名 HTTPRequest の下に作成されなければなりません。 そして、メッセージ・ツリーを構文解析してビット・ストリームにするとき、 HTTPRequest パーサーによって構文解析されます。 Compute ノードで独自の HTTPRequest ヘッダーを作成することもできますし、 デフォルト値または入力メッセージの HTTPInput または HTTPRequest ツリーから取った値を使ってヘッダーを作成するよう、 HTTPRequest ノードを構成することもできます。 HTTPRequest ノードがデフォルトの HTTPRequest ヘッダーを作成する場合、 このヘッダーの中には以下のテーブルに表示される Web サービス・ヘッダーと値が入っています。
    ヘッダー
    Host 「デフォルト Web サービス URL (Default Web Service URL)」プロパティーに設定された値。
    Content-Length 要求メッセージ本体の計算された長さ (10 進)。
    Content-Type text/xml; charset=utf-8
    SOAPAction "" (空ストリング)
  4. 応答。 応答メッセージは、 要求メッセージの送信先の Web サーバーから送信され、HTTPRequest ノードが受信します。 応答メッセージ内の HTTP ヘッダー (CRLFCRLF までのデータ (CRLFCRLF 自体も含む)) は、 HTTPResponse パーサーによって構文解析され、 メッセージ・ツリーの中の相関名 HTTPResponse の下に組み込まれます。 応答メッセージの中には、以下のテーブルに表示されるヘッダーが入っているものと期待されます (しかし、 絶対必要というわけではありません)。他のヘッダーが入っている場合もあります。
    ヘッダー 内容
    Content-Length 応答メッセージ本体の長さ (10 進)。 1585

メッセージ例に、 上記のヘッダーが組み込まれたメッセージの例を示します。

メッセージ例

以下のメッセージは、HTTPRequest ノードが、 ルックアップ・サービスを提供する Web サービスに対して送信する要求の例を示しています。

POST /greenpages/servlet/rpcrouter HTTP/1.0
Host: localhost
Content-Type: text/xml; charset=utf-8
Content-Length: 520
SOAP Action: ""
Cookie: JSESSIONID=0000B5OSLFIUDMQZFAUXKHD5ZDQ:-1

<?xml version='1.0' encoding='UTF-8'?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schema.xmlsoap.org.soap/envelope/"
                                      xmlns:xsi="http://www.w3/2001/XMLSchema-instance"
                                      xmlns:xsd="http://www.w3/2001/XMLSchema">
<SOAP-ENV:Body>
<ns1:getUserByName xmlns:ns1="http://tempuri.org/imb.GreenPages"
                                      SOAP-ENV:encodingStyle="http:/schemas.xmlsoap.org/soap/encoding/">
<nameField xsl:type="xsd:string">bloggs, joe</nameField>
</ns1:getUserByName>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

以下のメッセージは、HTTPRequest ノードに対して戻される応答の一例を示しています。

HTTP/1.0 200 OK
Server: WebSphere Application Server/4.0
Content-Type: text/xml; charset=utf-8
Content-Length: 1585
Content-Language: en
Connection: close

<?xml version='1.0' encoding='UTF-8'?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schema.xmlsoap.org.soap/envelope/"
                                      xmlns:xsi="http://www.w3/2001/XMLSchema-instance"
                                      xmlns:xsd="http://www.w3/2001/XMLSchema">
<SOAP-ENV:Body>
<ns1:getUserByNameResponse xmlns:ns1="http://tempuri.org/imb.GreenPages"
                                      SOAP-ENV:encodingStyle="http:/schemas.xmlsoap.org/soap/encoding/">
<return xmlns:ns2="http://www.greenpages.com/schemas/GreenPagesRemoteInterface"
                xsi:type="ns2:imb.UserRecord">
<fullName xsi:type="xsd:string">Joseph Bloggs</fullName>
<empNum xsi:type="xsd:int">65874</empNum>
<deskPhone xsi:type="xsd:string">(718)545-3623</deskPhone>
</return>
</ns1:getUserByNameResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

関連概念
メッセージ・フロー
Web サービス記述言語 (WSDL) の生成

関連タスク
メッセージ・フロー・アプリケーションの開発
メッセージ・セットからの Web サービス定義の生成
メッセージ・フロー・アプリケーションのデプロイ

関連資料
WebSphere MQ Web Services Transport

developerWorks Web サイト