ページの先頭行へ戻る
Interstage Application Server MessageQueueDirector説明書
Interstage

10.6 アプリケーションの作成方法

送信側と受信側の非同期メッセージ基盤が異なる場合やグローバルサーバなどの他のプラットフォームとの間でイベントチャネル連携サービスを使用したサーバ間連携を行う場合は、表10.30 通信可能なメッセージの形式に示す各々の非同期メッセージ基盤で動作するアプリケーションが共通して処理できるメッセージの範囲でアプリケーション論理を作成する必要があります。

各通信形態で通信可能なメッセージの形式とアプリケーション作成時の留意点を以下に示します。

表10.30 通信可能なメッセージの形式

送信側の非同期メッセージ基盤

受信側の非同期メッセージ基盤

ノーティフィケーションサービス

JMS

MQD(注1) (注2)

グローバルサーバのMQD

ノーティフィケーションサービス

形式1

形式2

形式3

JMS

形式1

形式4

形式6

MQD (注3)

形式2

形式4

形式5

グローバルサーバのMQD

形式3

形式6

形式5

○: 各非同期メッセージ基盤に対応したメッセージの送信が可能
-: 本機能の機能範囲外

注意

  1. Linux、Windows Server(R) for Itanium-based Systems および Windows Server(R) x64 Editions では使用できません。

  2. 受信側の非同期メッセージ基盤がMQDの場合、受信できない形式のメッセージを受信するとシテムログにMQD6374のエラーメッセージが出力されます。

  3. 文字列データとして送信するメッセージの終端がNULL文字以外の場合は、自動的にメッセージの終端にNULL文字(1バイト)が付加されます。

形式1

“J2EEユーザーズガイド”に示すメッセージの形式の範囲でアプリケーションを作成してください。

形式2

ノーティフィケーションサービスのアプリケーションでは、表10.31 利用可能なCORBAサービスのデータ型の形式のメッセージをMQDのアプリケーションに送信できます。

表10.31 利用可能なCORBAサービスのデータ型

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のアプリケーションから受信できます。

表10.32 利用可能なCORBAサービスのデータ型

CORBAサービスのデータ型

C言語での定義

文字列型

CORBA_string

シーケンス型のオクテッド型

CORBA_Sequence_octet

形式3

ノーティフィケーションサービスのアプリケーションとグローバルサーバのアプリケーションでは表10.33 利用可能なCORBAサービスのデータ型のCORBAサービスのデータ型でメッセージの送受信ができます。

表10.33 利用可能な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のアプリケーションに送信できます。

表10.34 利用可能なCORBAサービスのデータ型

JMS Message

対応するCORBAサービスのデータ型

ByteMessage

シーケンス型のオクテッド型

TextMessage

ワイド文字列型

JMSのアプリケーションでは、表10.35 利用可能なCORBAサービスのデータ型の形式のメッセージをMQDのアプリケーションから受信できます。

表10.35 利用可能なCORBAサービスのデータ型

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サービスのデータ型の形式のメッセージをグローバルサーバのアプリケーションに送信できます。

表10.36 利用可能なCORBAサービスのデータ型

JMS Message

対応するCORBAサービスのデータ型

ByteMessage

シーケンス型のオクテッド型

TextMessage

ワイド文字列型

JMSのアプリケーションでは、表10.37 利用可能なCORBAサービスのデータ型の形式のメッセージをグローバルサーバのアプリケーションから受信できます。

表10.37 利用可能なCORBAサービスのデータ型

JMS Message

対応するCORBAサービスのデータ型

ByteMessage

シーケンス型のオクテッド型
配列型のオクテッド型

TextMessage

文字列型
ワイド文字列型

注意

非同期メッセージ基盤にノーティフィケーションサービスまたはJMSを使用する場合、ユーザアプリケーションから送信するメッセージの生存時間は無限大を指定してください。
有限の時間を指定した場合、イベントチャネル連携サービスの転送処理中にメッセージの生存時間切れでメッセージが削除されてしまう場合があります。イベントチャネル連携サービスの動作上の問題は発生しませんが、送信側と受信側でメッセージの数に食い違いが発生するなど、運用上の問題になる可能性が高いため、ユーザアプリケーションから送信するメッセージの生存時間は無限大を指定することを強く推奨します。