Forma en que la carga útil se extrae del mensaje JMS para cada tipo de mensaje JMS.
Se requiere proceso adicional para manejar la carga útil de ObjectMessage debido a que la carga útil de ObjectMessage 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 ha de quedar disponible para el nodo JMSInput y debe asegurarse de que queda accesible a través del 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 en un nodo JavaCompute o en una extensión definida por el usuario, y se actualiza utilizando sus 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 para poder utilizarlo 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 agrega cada par de nombre-valor a una corriente de bits como un elemento y valor XML y conserva el tipo de 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 predeterminado 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.