WebSphere MQ Web Services Transport

WebSphere MQ Web Services Transport es un servicio que conecta clientes de servicios web que utilizan el protocolo HTTP para mensajería.

Los clientes de servicios web utilizan mensajería no transaccional y no permanente para comunicarse con otras aplicaciones. WebSphere Business Integration Message Broker ofrece soporte para permitir que los clientes se comuniquen con otras aplicaciones a través de flujos de mensajes utilizando un intermediario.

Los clientes son suministradores de servicio o peticionarios de servicio. Los suministradores de servicio publican sus servicios, definidos en WSDL, en un registro. Los peticionarios de servicio consultan el registro de servicios para localizar información sobre los servicios disponibles, que incluye dónde se encuentran los servicios y cómo enlazar a ellos.

La posibilidad de comunicar con un intermediario significa que los clientes de servicios web se pueden comunicar con aplicaciones que utilizan otros transportes y protocolos para los que se ofrece soporte, si el flujo de mensajes se ha configurado para proporcionar esta función.

Si desea ver más información, siga el enlace de los servicios web del sitio web developerWorks.

Formato de mensaje de los servicios web

Los mensajes que pasan a través de este transporte tienen un formato XML que proporciona independencia de plataforma. El estándar SOAP establece el contenido XML que define operaciones específicas y situaciones de error (Error SOAP). Puesto que no se garantiza la entrega, las aplicaciones deben facilitar la recuperación en caso de que se produzcan anomalías en el sistema o en la red.

Un mensaje contiene componentes que son adecuados para este tipo:

Serie de caracteres del mandato
Un mensaje de solicitud contiene el mandato POST seguido de un URL. La serie de caracteres del mandato finaliza con HTTP/1.0.
Línea de estado
Un mensaje de respuesta contiene una línea de estado que empieza con HTTP/1.0 e indica si la petición con un código y texto ha sido satisfactoria o ha obtenido un resultado anómalo, por ejemplo, 200 OK, 404 Not Found, 500 Server Error.
Cabeceras
Las cabeceras que utiliza el protocolo de servicios web son cabeceras HTTP que constan de un nombre seguido de los caracteres de dos puntos y (opcionalmente) espacio, seguido del valor (contenido) de la cabecera. A continuación de cada cabecera se incluyen los caracteres CRLF. Después de la cabecera final se incluye CRLFCRLF, que crea una línea en blanco. Los datos que se incluyen después de esta línea se interpretan como datos del cuerpo del mensaje. Las cabeceras se describen en el apartado Cabeceras de servicios web.
Cuerpo
El cuerpo del mensaje son los datos que siguen a las cabeceras del mensaje (es decir, que se incluyen después de los caracteres CRLFCRLF). Para un mensaje de entrada que ha recibido el nodo HTTPInput o HTTPRequest, por lo general, estos datos se analizan conforme a los valores de las propiedades de mensaje del nodo. Para los mensajes de salida, los datos suelen analizarse conforme a los valores de las propiedades de mensaje de la carpeta Propiedades que recibe el nodo HTTPReply o HTTPRequest que analiza el mensaje del árbol de mensajes para la corriente de bits.

En la mayoría de los casos, el cuerpo de un mensaje es XML. Sin embargo, un mensaje de entrada puede contener un formato diferente si el nodo receptor se ha configurado para manejar dicho formato y los analizadores adecuados están disponibles. Un mensaje de entrada puede contener un cuerpo de cualquier formato que acepte el servicio web al que se envía.

El resultado de un error generado por un componente que no sea un servicio web (por ejemplo, 404 Not Found) puede ser que un mensaje tenga un formato HTML.

La corriente de bits que contiene cabeceras y cuerpo se analiza y representa en el árbol de mensajes cuando un nodo HTTPInput recibe una petición de entrada, o bien, cuando el nodo HTTPRequest recibe una respuesta de un servicio web. Los analizadores crean una corriente de bits a partir de los componentes adecuados del árbol de mensajes cuando el nodo HTTPReply envía una respuesta al cliente y cuando el nodo HTTPRequest envía una petición a un servicio web. Para obtener información detallada sobre estas acciones, consulte las descripciones específicas de los nodos.

Cabeceras de servicios web

Cuando se recibe un mensaje desde un cliente de servicios web o un servidor web, el nodo HTTPInput o HTTPRequest que lo recibe debe analizar las cabeceras HTTP para crear elementos en el árbol de mensajes. Cuando un mensaje HTTPReply o HTTPRequest envía un mensaje a un cliente de servicios web o a un servidor web, analiza las cabeceras HTTP del árbol de mensajes para una corriente de bits.

Las cabeceras HTTP de un mensaje dependen del tipo de mensaje que se procesa. Existe cuatro tipos de mensajes reconocidos en un flujo de mensajes y cada uno de ellos tiene un analizador asociado.

  1. Entrada. El nodo HTTPInput recibe el mensaje de entrada del cliente de servicios web. El analizador HTTPInput analiza las cabeceras HTTP del mensaje de entrada (todos los datos hasta e incluida CRLFCRLF), y se incluyen en el árbol de mensajes bajo el nombre de correlación de HTTPInput. En un mensaje de entrada se esperan las cabeceras que se muestran en la tabla siguiente, pero también puede haber otras.
    Cabecera Contenido Ejemplo
    Host Nombre del sistema principal para el que el cliente ha emitido el mensaje. localhost
    Content-Length Longitud del cuerpo del mensaje de entrada en decimales (después de CRLFCRLF y antes de la última cabecera). 520
    Content-Type Tipo de datos del cuerpo. text/xml; charset=utf-8
    SOAPAction   "" (serie de caracteres vacía)
  2. Respuesta. El nodo HTTPReply envía un mensaje de respuesta al cliente de servicios web que ha enviado el mensaje de entrada correspondiente. Las cabeceras del servicio web de los mensajes de respuesta se crean en el árbol de mensajes bajo el nombre de correlación HTTPReply, que también es el nombre del analizador que se ha utilizado para analizar dicha parte del árbol de mensajes para una corriente de bits. Puede elegir si desea crear su propia cabecera HTTPReply en un nodo Compute, o bien, puede configurar el nodo HTTPReply para crearla utilizando valores por omisión o valores extraídos de los árboles HTTPInput o HTTPRequest del mensaje de entrada, o ambos. Si el nodo HTTPReply crea una cabecera HTTPReply por omisión, contiene los valores y las cabeceras de los servicios web que se muestran en la tabla siguiente.
    Cabecera Valor
    Content-Length (si está presente en el mensaje de entrada) Longitud calculada del cuerpo del mensaje de respuesta en decimales.
    Content-Type text/xml; charset=utf-8
  3. Petición. El nodo HTTPRequest envía un mensaje de solicitud a un servidor web. Las cabeceras HTTP de este mensaje se deben crear en el árbol de mensajes bajo el nombre de correlación de HTTPRequest, y el analizador de HTTPRequest las analiza cuando se analiza el árbol de mensajes para una corriente de bits. Puede elegir si desea crear su propia cabecera HTTPRequest en un nodo Compute o bien, puede configurar el nodo HTTPRequest para crearla utilizando valores por omisión o valores extraídos de los árboles HTTPInput o HTTPRequest del mensaje de entrada, o ambos. Si el nodo HTTPRequest crea una cabecera HTTPRequest por omisión, contiene los valores y las cabeceras de los servicios web que se muestran en la tabla siguientes.
    Cabecera Valor
    Host Valor establecido en la propiedad URL de servicios web por omisión.
    Content-Length Longitud calculada del cuerpo del mensaje de solicitud en decimales.
    Content-Type text/xml; charset=utf-8
    SOAPAction "" (serie de caracteres vacía)
  4. Respuesta. El nodo HTTPRequest recibe un mensaje de respuesta del servidor web al que se ha enviado el mensaje de solicitud correspondiente. El analizador de HTTPResponse analiza las cabeceras HTTP del mensaje de respuesta (todos los datos hasta e incluida CRLFCRLF), y se incluyen en el árbol de mensajes bajo el nombre de correlación de HTTPResponse. En un mensaje de respuesta se espera la cabecera que se muestra en la tabla siguiente (aunque no es obligatorio), pero también puede haber otras.
    Cabecera Contenido Ejemplo
    Content-Length Longitud del cuerpo del mensaje de respuesta en decimales. 1585

Mensajes de ejemplo proporciona mensajes de ejemplo que incluyen estas cabeceras.

Mensajes de ejemplo

Los mensajes siguientes proporcionan un ejemplo de una petición que ha enviado un nodo HTTPRequest a un servicio web que ofrece un servicio de búsqueda:

POST /greenpages/servlet/rpcrouter HTTP/1.0
Host: localhost
Content-Type: text/xml; charset=utf-8
Content-Length: 520
SOAP Action: ""
Cookie: JSESSIONID=0000B5OSLFIUDMQZFAUXKHD5ZDQ:-1

<?xml version='1.0' encoding='UTF-8'?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schema.xmlsoap.org.soap/envelope/"
                   xmlns:xsi="http://www.w3/2001/XMLSchema-instance"
                   xmlns:xsd="http://www.w3/2001/XMLSchema">
<SOAP-ENV:Body>
<ns1:getUserByName xmlns:ns1="http://tempuri.org/imb.GreenPages"
                   SOAP-ENV:encodingStyle="http:/schemas.xmlsoap.org/soap/encoding/">
<nameField xsl:type="xsd:string">bloggs, joe</nameField>
</ns1:getUserByName>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

El mensaje siguiente es un ejemplo de la respuesta que se puede devolver al nodo HTTPRequest:

HTTP/1.0 200 OK
Server: WebSphere Application Server/4.0
Content-Type: text/xml; charset=utf-8
Content-Length: 1585
Content-Language: en
Connection: close

<?xml version='1.0' encoding='UTF-8'?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schema.xmlsoap.org.soap/envelope/"
                   xmlns:xsi="http://www.w3/2001/XMLSchema-instance"
                   xmlns:xsd="http://www.w3/2001/XMLSchema">
<SOAP-ENV:Body>
<ns1:getUserByNameResponse xmlns:ns1="http://tempuri.org/imb.GreenPages"
                   SOAP-ENV:encodingStyle="http:/schemas.xmlsoap.org/soap/encoding/">
<return xmlns:ns2="http://www.greenpages.com/schemas/GreenPagesRemoteInterface"
        xsi:type="ns2:imb.UserRecord">
<fullName xsi:type="xsd:string">Joseph Bloggs</fullName>
<empNum xsi:type="xsd:int">65874</empNum>
<deskPhone xsi:type="xsd:string">(718)545-3623</deskPhone>
</return>
</ns1:getUserByNameResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Conceptos relacionados
Flujos de mensajes
Generación del lenguaje de descripción de servicios web (WSDL)

Tareas relacionadas
Desarrollo de aplicaciones de flujos de mensajes
Generación de una definición de servicio web desde un conjunto de mensajes
Difusión de aplicaciones de flujos de mensajes

Referencia relacionada
WebSphere MQ Web Services Transport

Sitio web developerWorks