送信側と受信側の非同期メッセージ基盤が異なる場合やグローバルサーバなどの他のプラットフォームとの間でイベントチャネル連携サービスを使用したサーバ間連携を行う場合は、表10.30 通信可能なメッセージの形式に示す各々の非同期メッセージ基盤で動作するアプリケーションが共通して処理できるメッセージの範囲でアプリケーション論理を作成する必要があります。
各通信形態で通信可能なメッセージの形式とアプリケーション作成時の留意点を以下に示します。
送信側の非同期メッセージ基盤 | 受信側の非同期メッセージ基盤 | |||
---|---|---|---|---|
ノーティフィケーションサービス | JMS | MQD(注1) (注2) | グローバルサーバのMQD | |
ノーティフィケーションサービス | ○ | 形式1 | 形式2 | 形式3 |
JMS | 形式1 | ○ | 形式4 | 形式6 |
MQD (注3) | 形式2 | 形式4 | ○ | 形式5 |
グローバルサーバのMQD | 形式3 | 形式6 | 形式5 | - |
○: 各非同期メッセージ基盤に対応したメッセージの送信が可能
-: 本機能の機能範囲外
注意
Linux、Windows Server(R) for Itanium-based Systems および Windows Server(R) x64 Editions では使用できません。
受信側の非同期メッセージ基盤がMQDの場合、受信できない形式のメッセージを受信するとシテムログにMQD6374のエラーメッセージが出力されます。
文字列データとして送信するメッセージの終端がNULL文字以外の場合は、自動的にメッセージの終端にNULL文字(1バイト)が付加されます。
形式1
“J2EEユーザーズガイド”に示すメッセージの形式の範囲でアプリケーションを作成してください。
形式2
ノーティフィケーションサービスのアプリケーションでは、表10.31 利用可能なCORBAサービスのデータ型の形式のメッセージをMQDのアプリケーションに送信できます。
CORBAサービスのデータ型 | C言語での定義 |
---|---|
整数型 | CORBA_short |
CORBA_unsigned_long | |
CORBA_long | |
CORBA_unsigned_short | |
CORBA_long_long | |
浮動小数点型 | CORBA_float |
CORBA_double | |
CORBA_long_double | |
文字型 | CORBA_char |
CORBA_wchar | |
オクテッド型 | CORBA_octet |
ブーリアン型 | CORBA_boolean |
文字列型 | CORBA_string |
ワイド文字列型 | CORBA_wstring |
列挙型 | CORBA_enum |
シーケンス型のオクテッド型 | CORBA_Sequence_octet |
ノーティフィケーションサービスのアプリケーションでは、表10.32 利用可能なCORBAサービスのデータ型の形式のメッセージをMQDのアプリケーションから受信できます。
CORBAサービスのデータ型 | C言語での定義 |
---|---|
文字列型 | CORBA_string |
シーケンス型のオクテッド型 | CORBA_Sequence_octet |
形式3
ノーティフィケーションサービスのアプリケーションとグローバルサーバのアプリケーションでは表10.33 利用可能なCORBAサービスのデータ型のCORBAサービスのデータ型でメッセージの送受信ができます。
CORBAサービスのデータ型 | 説明 |
---|---|
基本データ型 | 整数型、浮動小数点型、文字型、オクテット型、ブーリアン型、文字列型が利用可能 |
シーケンス型(注1) | 応用プログラムの実行時に要素数を指定する可変長の一次元配列のデータ型 |
配列型(注1) | 要素数が固定の1次元配列のデータ型 |
共用体型 | 一つのデータを複数個の異なるデータ型で共用して表すデータ型 |
構造体型 | 集団項目のデータ型 |
注1) オクテット型と組み合わせることにより、バイナリデータとして扱うことができます。バイナリデータとは、通信時にいかなる変換もされないデータのことを言います。
一つのメッセージに複数の項目を定義する場合には、構造体型を使用してください。以下に構造体型の定義例を示します。
グローバルサーバでは、コピーライブラリで以下のように定義し、インタフェース定義制御文のENTRY制御文では、“PARMTYPE=NOSTRUCT”を省略します。
000010 01 IN-REC. 000020 02 INSTR1 PIC X(100). 000030 02 INSTR2. 000040 49 LEN PIC S9(9) BINARY. 000050 49 DAT PIC X(1000). 000060* |
構造体型を使用しない場合には、一つのメッセージに一つの項目だけ定義できます。以下に文字列型の定義例を示します。
グローバルサーバでは、コピーライブラリで以下のように定義し、インタフェース制御文定義のENTRY制御文で、“PARMTYPE=NOSTRUCT”を指定します。
000010 01 IN-REC. 000020 02 INSTR. 000030 49 LEN PIC S9(9) BINARY. 000040 49 DAT PIC X(10000). 000050* |
形式4
JMSのアプリケーションでは、表10.34 利用可能なCORBAサービスのデータ型の形式のメッセージをMQDのアプリケーションに送信できます。
JMS Message | 対応するCORBAサービスのデータ型 |
ByteMessage | シーケンス型のオクテッド型 |
TextMessage | ワイド文字列型 |
JMSのアプリケーションでは、表10.35 利用可能なCORBAサービスのデータ型の形式のメッセージをMQDのアプリケーションから受信できます。
JMS Message | 対応するCORBAサービスのデータ型 |
ByteMessage | シーケンス型のオクテッド型 |
TextMessage | 文字列型 |
形式5
MQDのアプリケーションと通信するグローバルサーバのアプリケーションでは以下に示すCOPYLIBを参考にIDLファイルを作成してください。
グローバルサーバとメッセージの通信をする場合、“非有限文字列型構造体”もしくは“非有限バイナリ型構造体”を推奨します。
“有限文字列型構造体”もしくは“有限バイナリ型構造体”を使用する場合、Windowsサーバ、UnixサーバもしくはLinuxサーバから送信されるデータ長が65535バイト固定となります。グローバルサーバ側のインタフェース定義のデータ長を65535バイト固定にしてください。
000010*======================================================================== 000020* STRING 000030*======================================================================== 000040 01 IN-REC. 000050 02 INSTRING. 000060 49 LEN PIC S9(9) BINARY. 000070 49 DAT PIC X(1~1999996). ・・・(注) 000080* 注) DAT項目の大きさはメッセージ長に合わせて、1~1999996の範囲で指定してください。 |
000010*======================================================================== 000020* SEQUENCE <OCTET> 000030*======================================================================== 000040 01 IN-REC. 000050 02 INSEQOCTET. 000060 49 LEN PIC S9(9) BINARY. 000070 49 DAT PIC X(1~1999996). ・・・(注) 000080* 注) DAT項目の大きさはメッセージ長に合わせて、1~1999996の範囲で指定してください。 |
000010*======================================================================== 000020* STRING<65535> 000030*======================================================================== 000040 01 IN-REC. 000050 02 INBSTRING PIC X(65535). 000060* |
000010*======================================================================== 000020* OCTET[65535] 000030*======================================================================== 000040 01 IN-REC. 000050 02 INBARYOCTET PIC X(65535). 000060* |
形式6
JMSのアプリケーションでは、表10.36 利用可能なCORBAサービスのデータ型の形式のメッセージをグローバルサーバのアプリケーションに送信できます。
JMS Message | 対応するCORBAサービスのデータ型 |
ByteMessage | シーケンス型のオクテッド型 |
TextMessage | ワイド文字列型 |
JMSのアプリケーションでは、表10.37 利用可能なCORBAサービスのデータ型の形式のメッセージをグローバルサーバのアプリケーションから受信できます。
JMS Message | 対応するCORBAサービスのデータ型 |
ByteMessage | シーケンス型のオクテッド型 |
TextMessage | 文字列型 |
注意
非同期メッセージ基盤にノーティフィケーションサービスまたはJMSを使用する場合、ユーザアプリケーションから送信するメッセージの生存時間は無限大を指定してください。
有限の時間を指定した場合、イベントチャネル連携サービスの転送処理中にメッセージの生存時間切れでメッセージが削除されてしまう場合があります。イベントチャネル連携サービスの動作上の問題は発生しませんが、送信側と受信側でメッセージの数に食い違いが発生するなど、運用上の問題になる可能性が高いため、ユーザアプリケーションから送信するメッセージの生存時間は無限大を指定することを強く推奨します。