Acceso a una aplicación habilitada para WebSphere MQ como un servicio Web

Este escenario representa un servicio Web que proporciona una interfaz a una aplicación habilitada para WebSphere MQ utilizando MIME como dominio. A continuación, se proporcionan un flujo de mensajes para este escenario y los árboles de mensaje resultantes:

Este diagrama muestra un cliente HTTP externo que envía y recibe mensajes de un flujo de mensajes. El flujo de mensajes consta de un nodo HTTPInput conectado a un nodo Compute denominado Compute1. Entonces el nodo Compute se conecta a un nodo MQOutput. El nodo MQOutput pone el mensaje en una cola utilizada por una aplicación externa. La aplicación pone un mensaje en otra cola. El mensaje de la cola entra en el nodo MQInput. Este nodo se conecta a otro nodo Compute denominado Compute2. El nodo Compute se conecta a un nodo HTTPReply. Se devuelve el mensaje de respuesta al cliente HTTP.

Cuando un mensaje MIME entra en el flujo de mensajes, se almacena el tipo de contenido de nivel superior del mensaje en el árbol HTTPInputHeader y en el árbol lógico de mensaje MIME. El intermediario también almacena una copia del tipo de contenido del mensaje como el valor ContentType en el subárbol de propiedades (Properties). El diagrama siguiente muestra el árbol de mensaje después de que el mensaje haya salido del nodo HTTPInput:

El diagrama muestra el árbol lógico de mensaje después de que el mensaje haya salido del nodo HTTPInput. La raíz del árbol se denomina Root y tiene tres hijos. Éstos son, en orden, Properties, HTTPInputHeader y MIME.

El primer nodo Compute, Compute1, debe añadir una cabecera MQMD al mensaje y guardar el correlacionador HTTP para que lo utilice el flujo de retorno. El correlacionador HTTP puede almacenarse en una base de datos o se puede copiar en el cuerpo de mensaje. El siguiente ejemplo de ESQL ilustra cómo se puede almacenar el correlacionador en un cuerpo de mensaje XML:
SET OutputRoot.XML.X.rid = CAST(InputLocalEnvironment.Destination.HTTP.RequestIdentifier AS CHARACTER); 
El diagrama siguiente muestra el árbol de mensaje después de que salido de Compute1:

El diagrama muestra el árbol lógico de mensaje después de que el mensaje haya salido del primer nodo Compute. La raíz del árbol se denomina Root y tiene cuatro hijos. Éstos son, en orden, Properties, HTTPInputHeader, MQMD y MIME.

Si la aplicación que recibe el mensaje MQ espera que el mensaje esté en formato MIME, se necesita un árbol MIME. Compute1 puede proporcionarlo creando un árbol MIME nuevo o modificando y propagando el árbol MIME existente. Para modificar el tipo de contenido del mensaje, se deberá utilizar la propiedad ContentType del intermediario. Cuando se modifica la propiedad ContentType de intermediario, la propiedad Content-Type del árbol MIME se actualiza automáticamente.

Cuando se recibe el mensaje de la cola de mensajes a través del nodo MQInput, el segundo nodo Compute, Compute2, debe eliminar la cabecera MQMD del mensaje y restaurar el correlacionador HTTP. Si Compute1 ha copiado el correlacionador del cuerpo de mensaje como se describe más arriba, Compute2 puede restaurar el correlacionador con el siguiente ESQL:
SET OutputLocalEnvironment.Destination.HTTP.RequestIdentifier = CAST(InputRoot.XML.X.rid AS BLOB); 
Compute2 también puede configurar un HTTPReplyHeader explícito.

Si el dominio de salida es MIME, se debe crear un árbol MIME para producir el mensaje. Compute2 crea un mensaje MIME nuevo o modifica y propaga el mensaje MIME de entrada como sea necesario para crear el mensaje de salida. El diagrama siguiente muestra el árbol de mensaje después de que haya pasado por Compute2:

El diagrama muestra el árbol lógico de mensaje después de que el mensaje haya salido del segundo nodo Compute. La raíz del árbol se denomina Root y tiene cuatro hijos. Éstos son, en orden, Properties, HTTPInputHeader, HTTPReplyHeader y MIME.

Son posibles muchas variaciones de este escenario. Por ejemplo, se puede crear un flujo individual utilizando un nodo MQGet en lugar del nodo MQInput y entonces no sería necesario guardar el correlacionador HTTP. Sin embargo, potencialmente esto es menos escalable. El ejemplo de Ejemplo de respuesta de petición coordinada proporciona información adicional sobre cómo utilizar el nodo MQGet.

Conceptos relacionados
Manipulación de mensajes del dominio MIME
Detalles del árbol MIME
Mensajes MIME
Tareas relacionadas
Desarrollo de ESQL
Desarrollo de Java
Referencia relacionada
Creación de un servicio Web con HTTP como transporte
Creación de un servicio Web con WebSphere MQ como transporte
Aplicación habilitada para WebSphere MQ que llama a un servicio Web
Nodo HTTPReply
Avisos | Marcas registradas | Descargas | Biblioteca | Soporte | Su opinión
Copyright IBM Corporation 1999, 2006 Última actualización: 22/08/2006
ac30040_