WebSphere MQのメッセージは、ユーザデータが格納されるアプリケーション・データ部分と、メッセージ・ヘッダー(MQMD)部分で構成されています。各データのISIでの扱いは以下の通りです。
WebSphere MQのメッセージの詳細は、WebSphere MQの関連マニュアルを参照してください。

アプリケーション・データ
ISIでWebSphere MQのキューからメッセージを受信する場合、WebSphere MQのメッセージのアプリケーション・データ部分がISIの共通メッセージのペイロードにマッピングされます。
ISIからWebSphere MQのキューへメッセージを送信する場合、ISIの共通メッセージのペイロードがWebSphere MQのメッセージのアプリケーション・データ部分にマッピングされます。
メッセージ・ヘッダー(MQMD)
ISIからWebSphere MQのキューへメッセージを送信する場合、ISIの共通メッセージのヘッダに設定されたMQMD用のデータが、MQメッセージのフィールドにマッピングされます。ISIの共通メッセージのヘッダにMQMD用のデータが設定されていない場合、“表6.6 メッセージ・ヘッダー(MQMD)の設定値”に示す内容でMQMDの値が自動的に設定されます。
ISIがMQキューからメッセージを受信する場合、MQメッセージのMQMDのフィールドがISIの共通メッセージのヘッダに設定されます。
MQMDマッピングの動作
ここでは、MQMDマッピングの動作の詳細について説明します。
ISIの共通メッセージのヘッダとMQMDのフィールドを相互にマッピングする場合、MQMDのフィールドのデータ型に応じて以下のように動作します。ISIの共通メッセージのヘッダとMQMDのフィールドの対応関係については“MQMDのフィールドとISIの共通メッセージヘッダのキーの対応関係”を参照してください。

MQMDの値が基本データ型の場合
MQMDの値が基本データ型の場合、その値は対応するISIの共通メッセージのヘッダにそのままマッピングされます。
同様にISIの共通メッセージのヘッダの値も、対応するMQMDにそのままマッピングされます。
MQMDの値がバイナリ型(byte[])の場合
MQMDの値がバイナリ型(byte[])の場合、その値は指定した文字コード(デフォルトはUTF-8)で文字列型(String)に変換され、ISIの共通メッセージのヘッダにマッピングされます。
逆に、ISIの共通メッセージのヘッダの値は、文字列型(String)から指定した文字コード(デフォルトはUTF-8)を使用してバイナリ型(byte[])に変換され、MQMDにマッピングされます。
MQMDの値がPutDate/PutTimeの場合
MQMDの「PutDate」フィールドおよび「PutTime」フィールドの値は、WebSphere MQのJava用APIで「java.util.GregorianCalendar」の形式で保持しています。このため、MQMDの「PutDate」および「PutTime」の値は、エポック(1970/1/1 0時00分00秒)からの経過時間(ミリ秒)の文字列に変換され、ISIの共通メッセージのヘッダにマッピングされます。
逆に、ISメッセージのヘッダ「com.fujitsu.esi.mqmd.PutDate」の値は、エポックからの経過時間(ミリ秒)を表す文字列から「java.util.GregorianCalendar」の形式に変換され、MQMDにマッピングされます。
ポイント
MQMDの「PutDate」および「PutTime」の値は、WebSphere MQ上1/100秒までしか保持されません。このため、ISIで上記経過時間「1310698800845」を指定した場合、一度MQキューを経由すると1/1000秒の単位が0で置き換えられ「1310698800840」となります。
バイナリ型の値を変換する際の文字コードは、ISIの環境設定ファイル(ESISystemConfig.properties)に設定します。
キー名:com.fujitsu.esi.mqmd.transcharset
指定値:文字コード
設定の詳細については、“ISI 導入ガイド”の“環境のカスタマイズ”を参照してください。
MQMDマッピングが動作するタイミング
ここでは、MQMDマッピングが動作するタイミングについて説明します。

MQからの受信時
WebSphere MQからメッセージを受信したタイミングで、MQMDのフィールドをISIの共通メッセージヘッダにマッピングします。
MQへの送信時(Oneway方式)
ISIからWebSphere MQへOneway方式でメッセージを送信したタイミングで、ISIの共通メッセージヘッダにMQMD用のキーが設定されている場合、設定されている値をMQMDのフィールドにマッピングします。
MQへの送信時(RequestResponse方式の要求メッセージ送信)
ISIからWebSphere MQへRequestResponse方式の要求メッセージを送信したタイミングで、ISIの共通メッセージヘッダにMQMD用のキーが設定されている場合、設定されている値をMQMDのフィールドにマッピングします。
MQへの応答時(RequestResponse方式の応答メッセージ受信)
WebSphere MQからRequestResponse方式の応答メッセージを受信したタイミングで、MQMDのフィールドをISIの共通メッセージヘッダにマッピングします。
MQMDマッピングを実施しないで運用したい場合、以下の2通りの方法があります。
環境設定ファイル(ESISystemConfig.properties)に設定する方法
ISIの環境設定ファイル(ESISystemConfig.properties)に設定する方法です。セットアップしたMQアダプタ全てに反映されます。
キー名:com.fujitsu.esi.mqmd.mapping.compatibility
指定値:true
設定の詳細については、“ISI 導入ガイド”の“環境のカスタマイズ”を参照してください。
MQアダプタ設定ファイルに項目を設定する方法
MQアダプタ設定ファイルに設定する方法です。セットアップしたMQアダプタ毎に反映されます。
設定の詳細については“ISI 導入ガイド”の“MQアダプタ利用時の設定”を参照してください。
MQMDのフィールドとISIの共通メッセージヘッダのキーの対応関係
MQMDのフィールド名とISIの共通メッセージヘッダのキー名の対応関係は以下の通りです。
| MQMDフィールド名 | ISIの共通メッセージヘッダ キー名 | 備考 | 
|---|---|---|
| Report | com.fujitsu.esi.mqmd.Report | NULL指定不可(注1) | 
| MsgType | com.fujitsu.esi.mqmd.MsgType | NULL指定不可(注1) | 
| Expiry | com.fujitsu.esi.mqmd.Expiry | NULL指定不可(注1) | 
| Feedback | com.fujitsu.esi.mqmd.Feedback | NULL指定不可(注1) | 
| Encoding | com.fujitsu.esi.mqmd.Encoding | NULL指定不可(注1) | 
| CodedCharSetId | com.fujitsu.esi.mqmd.CodedCharSetId | NULL指定不可(注1) | 
| Format | com.fujitsu.esi.mqmd.Format | |
| Priority | com.fujitsu.esi.mqmd.Priority | NULL指定不可(注1) | 
| Persistence | com.fujitsu.esi.mqmd.Persistence | NULL指定不可(注1) | 
| MsgId | com.fujitsu.esi.mqmd.MsgId | バイナリ型(注2) | 
| CorrelId | com.fujitsu.esi.mqmd.CorrelId | バイナリ型(注2) | 
| BackoutCount | com.fujitsu.esi.mqmd.BackoutCount | ユーザ変更不可(注3) | 
| ReplyToQ | com.fujitsu.esi.mqmd.ReplyToQ | |
| ReplyToQMgr | com.fujitsu.esi.mqmd.ReplyToQMgr | |
| UserIdendifier | com.fujitsu.esi.mqmd.UserIdentifier | |
| AccountingToken | com.fujitsu.esi.mqmd.AccountingToken | バイナリ型(注2) | 
| ApplIdentityData | com.fujitsu.esi.mqmd.ApplIdentityData | |
| PutApplType | com.fujitsu.esi.mqmd.PutApplType | NULL指定不可(注1) | 
| PutApplName | com.fujitsu.esi.mqmd.PutApplName | |
| PutDate | com.fujitsu.esi.mqmd.PutDate | エポックからの経過時間(ミリ秒)で保持 | 
| PutTime | ||
| ApplOriginData | com.fujitsu.esi.mqmd.ApplOriginData | |
| 以下は、サービスエンドポイント定義の“メッセージ・ヘッダー(MQMD)のバージョン”に“バージョン2”が指定された場合に付加されるフィールドです。 | ||
| GroupId | com.fujitsu.esi.mqmd.GroupId | バイナリ型(注2) ユーザ変更不可(注3) | 
| MsgSeqNumber | com.fujitsu.esi.mqmd.MsgSeqNumber | ユーザ変更不可(注3) | 
| Offset | com.fujitsu.esi.mqmd.Offset | ユーザ変更不可(注3) | 
| MsgFlags | com.fujitsu.esi.mqmd.MsgFlags | NULL指定不可(注1) | 
| OriginalLength | com.fujitsu.esi.mqmd.OriginalLength | ユーザ変更不可(注3) | 
注1:値としてNULLが指定された場合は、マッピングが実施されず“メッセージ・ヘッダー(MQMD)の設定値”に示す内容が自動的に設定されます。
注2:指定された文字コード(デフォルトはUTF-8)を使用して、文字列型(String)とバイナリ型(byte[])を相互に変換します。
注3:WebSphere MQからのメッセージ受信時にはMQMDの値をISIの共通メッセージヘッダにマッピングしますが、WebSphere MQへのメッセージ送信時にはISIの共通メッセージヘッダの値をMQMDにマッピングできません。
| フィールド名 | 設定値 | 
|---|---|
| StrucId | MQMD_STRUC_ID | 
| Version | サービスエンドポイント定義の“メッセージ・ヘッダー(MQMD)のバージョン”に指定された内容が設定されます。 詳細については、“ISI Studioヘルプ”を参照してください。 | 
| Report | MQRO_NONE | 
| MsgType | MQMT_DATAGRAM | 
| Expiry | MQEI_UNLIMITED | 
| Feedback | MQFB_NONE | 
| Encoding | MQENC_NATIVE | 
| CodedCharSetId | MQCCSI_Q_MGR | 
| Format | MQFMT_NONE | 
| Priority | MQPRI_PRIORITY_AS_Q_DEF | 
| Persistence | MQPER_PERSISTENCE_AS_Q_DEF | 
| MsgId | MQMI_NONE | 
| CorrelId | MQCI_NONE | 
| BackoutCount | 0 | 
| ReplyToQ | 空白 | 
| ReplyToQMgr | 空白 | 
| UserIdendifier | 空白 | 
| AccountingToken | MQACT_NONE | 
| ApplIdentityData | 空白 | 
| PutApplType | MQAT_NO_CONTEXT | 
| PutApplName | 空白 | 
| PutDate | 空白 | 
| PutTime | 空白 | 
| ApplOriginData | 空白 | 
| 以下は、サービスエンドポイント定義の“メッセージ・ヘッダー(MQMD)のバージョン”に“バージョン2”が指定された場合に付加されるフィールドです。 | |
| GroupId | MQGI_NONE | 
| MsgSeqNumber | 1 | 
| Offset | 0 | 
| MsgFlags | MQMF_NONE | 
| OriginalLength | MQOL_UNDEFINED | 
各フィールドの詳細は、WebSphere MQの関連マニュアルを参照してください。