Cuando se ejecuta el ejemplo Sistema principal de servicio web, el intermediario recibe un mensaje SOAP/XML través del protocolo HTTP y devuelve un mensaje de respuesta SOAP/XML utilizando de nuevo HTTP. Por lo tanto, el intermediario actúa como sistema principal de servicio web.
El intermediario toma datos de dicho mensaje SOAP y genera un nuevo mensaje correlacionado como un archivo de cabecera C. Éste se envía a una aplicación heredada utilizando WebSphere MQ. La aplicación heredada responde y los datos de su respuesta se transfieren a la respuesta de HTTP que genera el intermediario. Por lo tanto, la aplicación heredada ha tratado la aplicación heredada como un servicio web.
Para ejecutar el ejemplo Sistema principal de servicio web:
La aplicación heredada está escrita en C y se inicia con dos parámetros de entrada : un nombre de gestor de colas y un nombre de cola de WebSphere MQ. La aplicación lee mensajes de la cola y el gestor de colas y envía respuestas a la cola y al gestor de colas especificados en la información de respuesta del mensaje de entrada.
Se facilitan dos versiones ejecutables de la aplicación heredada:
El ejemplo se ha configurado para ejecutar la aplicación heredada utilizando el mismo gestor de colas WebSphere MQ que el intermediario. Si el intermediario ha de utilizar un gestor de colas distinto para la aplicación heredada, deberá configurar los gestores de colas WebSphere MQ (intermediario y aplicación heredada) para la intercomunicación.
También deberá cambiar MQOutput por el nodo heredado en el flujo de mensajes WSHOST_WSHOST1. Establezca la propiedad Básica Nombre de gestor de colas en el nombre del gestor de colas de la aplicación heredada.Los mensajes de entrada y de salida están correlacionados con esta estructura C:
typedef struct tagIA81CONF { char MessageId[8]; char OrderNumber[8]; char ItemReference[12]; char ItemQuantity[8]; char CustomerNumber[12]; char DeliveryRef[8]; char Confirm[1]; char filler1[3]; } IA81CONF;
Se facilita en el archivo legacyservice.h del proyecto WSHOST_LEGACY. Observe que este archivo de cabecera contiene también otras estructuras
Todos los mensajes de prueba utilizados para la ejecución de este ejemplo se basan en el siguiente formato:
<?xml version="1.0" encoding="UTF-8"?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:c="http://www.brokersamplewshost.ibm.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <soapenv:Body> <c:IA81CONFIN> <MessageId>IA81CONF</MessageId> <OrderNumber>ON4002</OrderNumber> <ItemReference>IY4003</ItemReference> <ItemQuantity>4</ItemQuantity> <CustomerNumber>CY4004</CustomerNumber> </c:IA81CONFIN> </soapenv:Body> </soapenv:Envelope>
El ejemplo Sistema principal de servicio web invoca una aplicación heredada con un mensaje llamado msg_tagIA81CONF. En ese mensaje, un campo llamado DeliveryRef se establece en blanco en la entrada y se establece en JOHNCORP en la salida. Del mismo modo, un campo llamado Confirm se establece en blanco en la entrada y, en la salida, se establece en Y o N, dependiendo de si el campo de entrada ItemReference contiene el carácter Y.
Si utiliza Nettool, el panel de la derecha contendrá la respuesta HTTP.
El mensaje de respuesta del mensaje de entrada de arriba es el siguiente:
<?xml version="1.0"?> <tns:Envelope xmlns:tns="http://schemas.xmlsoap.org/soap/envelope/" xmlns:NS1="http://www.brokersamplewshost.ibm.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <tns:Body> <NS1:IA81CONFOUT> <MessageId>IA81CONF</MessageId> <OrderNumber>ON4002</OrderNumber> <ItemReference>IY4003</ItemReference> <ItemQuantity>4</ItemQuantity> <CustomerNumber>CY4004</CustomerNumber> <DeliveryRef>JOHNCORP</DeliveryRef> <Confirm>Y</Confirm> </NS1:IA81CONFOUT> </tns:Body> </tns:Envelope>