JMS ObjectMessage ペイロードはシリアライズされた Java オブジェクトなので、 ObjectMessage ペイロードを扱うには、追加の処理が必要です。
JMSInput ノードは、ペイロードを取得するために getObject( ) をメッセージに対して呼び出します。
getObject( ) は、元のクラスのシリアライズ解除されたオブジェクトを戻します。
このクラス定義は、JMSInput ノードによって使用可能となるようにする必要があります。
さらに、これがブローカーの Java クラスパスを介してアクセス可能であることを確認する必要があります。
(クラスパスは mqsiprofile バッチ・ファイルで定義されます。このファイルは、ブローカーの実行可能ディレクトリー中にあります。例えば、Windows では、install_dir/bin ディレクトリー中の mqsiprofile.cmd になります。)JMSInput ノードは、オブジェクトから作成されたビット・ストリームを使用してメッセージ本体を作成する、BLOB パーサーを起動します。
続いて、Java オブジェクトを JavaCompute ノード内またはユーザー定義の拡張内で再シリアライズしてから、そのメソッド呼び出しによって更新することができます。
MapMessage および StreamMessage のペイロードは、個別のエレメントとしてのみ抽出できます。 これは JMSInput ノードによって再フォーマットしてからでなければ、メッセージ本体を作成するために使用できません。
JMSMap ドメインは、XML データのストリームを必要とするブローカー XML パーサーの同義語です。 ただし、MapMessage ペイロード・データはメッセージ・オブジェクトから、名前と値の対のセットとして抽出されます。 JMS API は、名前と値の対を取得するために使用されます。
JMSInput ノードは、名前と値のそれぞれの対を XML エレメントおよび値としてビット・ストリームに追加して、dt= 属性を使用することにより値のタイプを保存します。
<map> <Item_8_of_10_Char dt='char'>A</Item_8_of_10_Char> <Item_5_of_10_Double dt='r8'>999999.0</Item_5_of_10_Double> <Item_10_of_10_String>Last Map Item</Item_10_of_10_String> <Item_9_of_10_Boolean dt='boolean'>0</Item_9_of_10_Boolean> <Item_2_of_10_Integrer dt='i4'>999</Item_2_of_10_Integrer> <Item_3_of_10_Short dt='i2'>9999</Item_3_of_10_Short> <Item_7_of_10_Byte dt='i1'>9</Item_7_of_10_Byte> <Item_6_of_10_Float dt='r4'>2.24</Item_6_of_10_Float> <Item_1_of_10_String>P2P Map Msg Number:1</Item_1_of_10_String> <Item_4_of_10_Long dt='i8'>99999</Item_4_of_10_Long> </map>この例で、メッセージには 10 のフィールドが含まれます。 JMS クライアント・アプリケーションによって生成されたフィールド名は、 item_n_of_x_t の形式となります。ここで、
StreamMessage ペイロード・データは、各フィールドに特定のタイプがある、一連のフィールドです。 フィールドには関連する名前がないので、 デフォルトのエレメント名 elt が使用されて XML エレメントが生成されます。 MapMessage の場合と同様に、JMS API はフィールドが個別に検索されることだけを許可します。 JMSInput ノードは JMS メッセージからフィールドを抽出して、それぞれを XML 形式でビット・ストリームに付加します。
<stream> <elt>P2P Stream Message Number :7</elt> <elt dt='i4'>999</elt> <elt dt='i2'>9999</elt> <elt dt='i8'>99999</elt> <elt dt='r8'>999999.0</elt> <elt dt='r4'>2.24</elt> <elt dt='i1'>9</elt> <elt dt='char'>A</elt> <elt dt='boolean'>0</elt> <elt>Last Stream Item</elt> </stream>この例では、10 のタイプ付き値が JMS クライアント・アプリケーションによって StreamMessage に追加されます。