WebSphere Bridge for HTTP のメッセージ・タイプおよびメッセージ・マッピング
WebSphere® MQ bridge for HTTP は 4 つのメッセージ・クラス、TEXT、BYTES、STREAM、および MAP をサポートしています。メッセージ・クラスは JMS メッセージ・タイプと HTTP Content-Type にマップされます。
HTTP POST
宛先に到達するメッセージ・タイプは、x-msg-class ヘッダーの値または HTTP 要求の Content-Type に応じて異なります。表 1に、各 x-msg-class に対応する HTTP Content-Type のタイプを示します。どちらのフィールドも、メッセージ・タイプとメッセージ・フォーマットを設定するために使用されることがあります。両方のフィールドが設定されていて、それが矛盾した設定である場合は、Bad Request 例外 (HTTP 400, MQHTTP20004) が返されます。
| x-msg-class | HTTP Content-Type |
|---|---|
| BYTES | application/octet-stream |
| TEXT | text/* |
| MAP | application/x-www-form-urlencoded |
| STREAM | application/xml (オプション) |
JMS メッセージ・タイプが MQRFH2 ヘッダーに設定されている場合、表 2に従ってマップされます。
| x-msg-class | JMS メッセージ・タイプ |
|---|---|
| BYTES | jms_bytes |
| TEXT | jms_text |
| MAP | jms_map |
| STREAM | jms_stream |
メッセージ・クラスが MAP または STREAM の場合は、JMS メッセージ・タイプが常に設定されます。メッセージ・クラスが BYTES または TEXT の場合は、常に設定されるとは限りません。要求に MQRFH2 が作成される場合は、常に JMS メッセージ・タイプが設定されます。一方、MQRFH2 が作成されない場合は、JMS メッセージ・タイプは設定されません。ユーザー・プロパティーが x-msg-usr ヘッダーを使用して要求内で設定されている場合、MQRFH2 が作成されます。
JMS メッセージ・タイプが設定されている場合、メッセージ・フォーマットは MQFMT_NONE に設定されます。表 4を参照してください。
| x-msg-class | メッセージに MQRFH2 がある場合のメッセージ・フォーマット | メッセージに MQRFH2 がない 場合のメッセージ・フォーマット |
|---|---|---|
| BYTES | MQFMT_NONE | MQFMT_NONE |
| TEXT | MQFMT_NONE | MQFMT_STRING |
| MAP | MQFMT_NONE | 不可能 |
| STREAM | MQFMT_NONE | 不可能 |
HTTP GET または DELETE
取得したメッセージ・タイプまたはメッセージ・フォーマットによって、HTTP 応答の x-msg-class ヘッダーの値および Content-Type が決定します。x-msg-class ヘッダーは、x-msg-headers 要求内で要求される場合に限り、返されます。
表 4 は、x-msg-class と Content-Type との間のマッピング、およびキューまたはトピックから取得されたメッセージ・タイプを説明しています。
| メッセージ形式 | JMS メッセージ・タイプ | x-msg-class | Content-Type |
|---|---|---|---|
| MQFMT_STRING 以外のすべて | なし | BYTES | application/octet-stream |
| MQFMT_STRING | なし | TEXT | text/plain |
| MQFMT_NONE | jms_bytes | BYTES | application/octet-stream |
| MQFMT_NONE | jms_text | TEXT | text/plain |
| MQFMT_NONE | jms_map | MAP | application/xml |
| MQFMT_NONE | jms_stream | STREAM | application/xml |
メッセージ・クラス MAP と STREAM のシリアライゼーション
MAP および STREAM メッセージ・クラスは、メッセージがキューにシリアライズされるのと同じ方法でシリアライズされ、HTTP 応答でクライアントに戻されます。
<map>
<elt name="elementname1" dt="datatype1">value1</elt>
<elt name="elementname2" dt="datatype2">value2</elt>
...
</map>
<stream>
<elt dt="datatype1">value1</elt>
<elt dt="datatype2">value2</elt>
...
</stream>
資料