Für die Handhabung der ObjectMessage-Nutzdaten ist eine zusätzliche Verarbeitung erforderlich, da es sich bei den JMS-ObjectMessage-Nutzdaten um ein serialisiertes Java-Objekt handelt.
Der JMSEmpfangsknoten bezieht die Nutzdaten, indem er getObject( ) für die Nachricht aufruft. getObject( ) gibt ein deserialisiertes Objekt der ursprünglichen Klasse zurück. Diese Klassendefinition muss dem JMSEmpfangsknoten zur Verfügung gestellt werden, und Sie sollten sicherstellen, dass die Definition über den Java-Klassenpfad des Brokers verfügbar ist. (Der Klassenpfad ist in der mqsiprofile-Stapeldatei definiert, die sich im ausführbaren Verzeichnis des Brokers befindet. Unter Windows ist dies z. B. die Datei mqsiprofile.cmd im Verzeichnis Installationsverzeichnis/bin.)
Der JMSEmpfangsknoten ruft den BLOB-Parser auf, der den Nachrichtenhauptteil durch die Verwendung eines auf Basis des Objekts erstellten Bitstroms erstellt.
Das Java-Objekt kann anschließend in einem Java-Rechenknoten oder einer benutzerdefinierten Erweiterung neu serialisiert und wird über die zugehörigen Methodenaufrufe aktualisiert.
Die Nutzdaten für MapMessage (Zuordnungsnachricht) und StreamMessage (Datenstromnachricht) können nur als individuelle Elemente extrahiert werden und müssen vom JMSEmpfangsknoten neu formatiert werden, bevor sie für die Erstellung des Nachrichtenhauptteils verwendet werden können.
Die JMSMap-Domäne ist ein Synonym für den XML-Broker-Parser, der einen XML-Datenstrom erwartet. Die MapMessage-Nutzdaten werden jedoch als Gruppe von Name/Wert-Paaren aus dem Nachrichtenobjekt extrahiert. Durch die JMS API können Name/Wert-Paare erhalten werden.
Der JMSEmpfangsknoten hängt jedes Name/Wert-Paar als XML-Element und -Wert an einen Bitstrom an und behält den Werttyp unter Verwendung des Attributs 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>In diesem Beispiel enthält die Nachricht 10 Felder. Die Feldnamen, die von einer JMS-Clientanwendung generiert wurden, haben das Format item_n_of_x_t. Dabei gilt:
Bei den StreamMessage-Nutzdaten handelt es sich um eine Reihe von Feldern, bei denen jedes Feld einen bestimmten Typ hat. Da den Feldern keine Namen zugeordnet wurden, wird ein standardmäßiger Elementname elt für die Generierung der XML-Elemente verwendet. Ähnlich wie bei MapMessage können die Felder mit der JMS API nur einzeln abgerufen werden. Der JMSEmpfangsknoten extrahiert Felder aus der JMS-Nachricht und hängt die einzelnen Felder im XML-Format an einen Bitstrom an.
<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>In diesem Beispiel werden der StreamMessage von der JMS-Clientanwendung 10 eingegebene Werte hinzugefügt.