Se necesita un proceso adicional para tratar con la carga útil ObjectMessage porque la carga útil ObjectMessage de JMS es un objeto Java serializado.
El nodo
JMSInput obtiene la carga útil llamando a getObject( ) en el
mensaje. getObject( ) devuelve un objeto deserializado de la clase
original. Esta definición de clase debe dejarse disponible para el nodo
JMSInput y debe asegurarse de que es accesible a través de la vía de
acceso de clases Java del intermediario. (La vía de acceso de clases se
define en el archivo de proceso por lotes mqsiprofile, que está en el
directorio ejecutable del intermediario; por ejemplo, en
Windows, este archivo es
mqsiprofile.cmd en el directorio
dir_instalación/bin.)
El nodo JMSInput invoca el analizador BLOB, que crea el cuerpo de mensaje
utilizando una corriente de bits que se crea desde el objeto.
El objeto Java se puede volver a serializar subsiguientemente en un nodo JavaCompute o una extensión definida por el usuario y se actualiza utilizando las llamadas de método.
La carga útil para MapMessage y StreamMessage sólo se puede extraer en forma de elementos individuales y el nodo JMSInput lo debe volver a formatear antes de que se pueda utilizar para crear el cuerpo del mensaje.
El dominio JMSMap es un sinónimo para el analizador XML de intermediario, que espera una corriente de datos XML. Sin embargo, los datos de carga útil de MapMessage se extraen como conjuntos de parejas de nombre-valor del objeto de mensaje. Se utiliza la API JMS para obtener las parejas de nombre-valor.
El nodo JMSInput añade cada pareja de nombre-valor a una corriente de bits como un elemento y valor XML y conserva el tipo del valor utilizando el atributo 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>En este ejemplo, el mensaje contiene 10 campos. Los nombres de campo han sido generados por una aplicación cliente JMS y toman el formato item_n_of_x_t, donde:
Los datos de carga útil de StreamMessage son una secuencia de campos, donde cada campo tiene un tipo específico. Los campos no tienen nombres asociados y, por consiguiente, se utiliza un nombre de elemento por omisión elt para generar los elementos XML. De forma similar a MapMessage, la API JMS sólo permite recuperar los campos de forma individual. El nodo JMSInput extrae campos del mensaje JMS y añade cada uno a una corriente de bits en formato 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>En este ejemplo, una aplicación cliente JMS añade 10 valores con tipo a StreamMessage.