Ejecutar el ejemplo Servicios web que utilizan nodos HTTP

Al importar el ejemplo es posible que reciba varios avisos en el Kit de herramientas sobre atributos, mensajes CWF, elementos y el dominio MRM. Estos avisos están relacionados con los conjuntos de mensajes y no afectan a la ejecución del ejemplo.

El ejemplo Servicios web que utilizan nodos HTTP consta de dos partes:

Si encuentra cualquier tipo de problema al ejecutar el ejemplo, consulte Resolución de problemas cuando se ejecutan ejemplos en la documentación de WebSphere Message Broker.

Ejecutar el ejemplo Sistema principal de servicio web

Cuando se ejecuta el ejemplo Sistema principal de servicio web, el intermediario recibe y devuelve un mensaje de SOAP/XML, con el protocolo HTTP. 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. Este mensaje nuevo se envía a una aplicación heredada utilizando WebSphere MQ. La aplicación heredada responde y los datos de esta respuesta se ponen en la respuesta HTTP generada por el intermediario. El intermediario ha tratado la aplicación heredada como un servicio web.

Para ejecutar el ejemplo Sistema principal de servicio web:

  1. Inicie la aplicación heredada.

    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 está configurado para ejecutar la aplicación heredada utilizando el gestor de colas que utiliza el intermediario y que ha creado el asistente de Configuración Predeterminada (MB8QMGR). Si el intermediario utiliza un gestor de colas distinto para la aplicación heredada, configure los gestores de colas WebSphere MQ (intermediario y heredado) para la intercomunicación; también debe cambiar el nodo MQOutput to legacy en el flujo de mensajes WSHOST_WSHOST1. Establezca la propiedad básica Nombre del gestor de colas en el nombre del gestor de colas utilizado por la aplicación heredada.

    Si desea ejecutar la aplicación heredada en una plataforma distinta de Windows o Linux, los archivos de origen se encuentran en el proyecto WSHOST_LEGACY1. El archivo de origen C es legacyservice.c, con los archivos de cabecera legacyservice.h y legacyservice2.h. Compile utilizando un compilador de su elección y, a continuación, ejecute la aplicación siguiendo las directrices anteriores para los parámetros de entrada.

    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;
    

    Esta estructura se proporciona en el archivo legacyservice.h del proyecto WSHOST_LEGACY1. Este archivo de cabecera también contiene otras estructuras.

  2. Ponga un mensaje SOAP en el URL que se especifica en el nodo HTTPInput WSHOST_WSHOST1.msgflow. Si no tiene ningún programa de utilidad para realizar esta tarea, hay varias herramientas freeware disponibles para probar servicios web y enviar mensajes SOAP. El mensaje de ejemplo está en el archivo WSHOST1IN.xml del proyecto WSHOST1_MFP1. Si el intermediario se encuentra en la misma máquina que el programa de utilidad HTTP, coloque el mensaje en http://localhost:7080/samplebrokerwshost. En caso contrario, rectifique el host local y el número de puerto según corresponda.

    Todos los mensajes de prueba utilizados en 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>
                <DeliveryRef> </DeliveryRef>
                <Confirm> </Confirm>
                <filler1> </filler1>
            </c:IA81CONFIN>
        </soapenv:Body>
    </soapenv:Envelope>
    

Descripción de los resultados

El ejemplo Host de servicio web llama a una aplicación heredada con un mensaje llamado msg_tagIA81CONF. En ese mensaje, el campo DeliveryRef se establece en blanco en la entrada y en la salida se establece en JOHNCORP. El campo Confirm se establece en blanco en la entrada y en la salida se establece en Y o N, en función de si el campo de entrada ItemReference contiene el carácter Y.

El código siguiente muestra el mensaje de respuesta del mensaje de entrada anterior:

<?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>
            <filler1>   </filler1>
        </NS1:IA81CONFOUT>
    </tns:Body>
</tns:Envelope>

Ejecutar el ejemplo Cliente de servicio web

Cuando se ejecuta el ejemplo Cliente de servicio web, el intermediario recibe un mensaje en el formato heredado a través del protocolo WebSphere MQ. Llama a un servicio web enviando un mensaje SOAP/XML utilizando el protocolo HTTP. Recibe una respuesta de servicio web como mensaje SOAP/XML, utilizando HTTP, y devuelve un mensaje de respuesta heredado, utilizando WebSphere MQ. El intermediario actúa como cliente de servicio web.

El intermediario toma datos del mensaje heredado, que se correlaciona con un archivo de cabecera C. Estos datos se utilizan para crear un mensaje SOAP/XML que se correlaciona con el esquema XML de un archivo WSDL. El archivo lo ha proporcionado un host de servicio web y se ha importado en un conjunto de mensajes en el intermediario. En este ejemplo, el host de servicio es el ejemplo Host de servicio Web.

Para ejecutar el ejemplo Cliente de servicio web, debe estar en ejecución el ejemplo Host de servicio Web.

Para ejecutar el ejemplo Cliente de servicio web:

  1. El flujo de mensajes presupone que el ejemplo Host de servicio web se está ejecutando en el mismo intermediario que el ejemplo Cliente de servicio web y que el intermediario está utilizando el número de puerto HTTP predeterminado 7080. Si no se está ejecutando en el mismo intermediario o número de puerto HTTP, corrija el host local y/o el número de puerto en el nodo HTTPRequest del flujo de mensajes para dirigirse al Host de servicio web. Deberá recompilar y desplegar el archivo BAR, WSCLIENT.bar, en el intermediario. Este archivo está en el proyecto de Message Broker WSCLIENT_MFP1 bajo Archivadores de intermediarios. Es posible que necesite copiar el archivo en un proyecto de dominio para poderlo desplegar.
  2. Si todavía no lo ha hecho, despliegue el archivo BAR, wshost, en el intermediario. Este archivo se encuentra en el proyecto de Message Broker WSHOST_MFP1. Es posible que tenga que copiarlo en un proyecto de dominios antes de desplegarlo.
  3. Si aún no lo ha hecho, inicie la aplicación heredada a la que llama el ejemplo Host de servicio Web; consulte la sección Ejecutar el host de servicio web de ejemplo de este tema.
  4. Ponga un mensaje en la cola WebSphere MQ que está definida en el nodo MQInput; el nombre de cola es WSCLIENT1_IN1.

    Los mensajes de prueba de entrada utilizados para la ejecución de este ejemplo se basan en el siguiente formato:

    typedef struct tagIA81BUY {
       char MessageId[8];
       char OrderNumber[8];
       char ItemReference[12];
       char ItemQuantity[8];
       char CustomerNumber[12];
       char DeliveryRef[8];
    } IA81BUY;
    

    El mensaje siguiente se envía al flujo de mensajes de Host de servicio Web:

    
    <?xml version="1.0"?>
    <tns:Envelope xmlns:tns="http://schemas.xmlsoap.org/soap/envelope/"
        xmlns:NS1="http://schemas.xmlsoap.org/soap/encoding/"
        xmlns:NS2="http://www.brokersamplewshost.ibm.com"
        xmlns:xsd="http://www.w3.org/2001/XMLSchema"
        xmlns:mrm="http://tempuri.org/"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        <tns:Body>
            <NS2:IA81CONFIN>
                <MessageId>IA81CONF</MessageId>
                <OrderNumber>LAB51234</OrderNumber>
                <ItemReference>ITEM12345678</ItemReference>
                <ItemQuantity>qty00005</ItemQuantity>
                <CustomerNumber>CUST34567890</CustomerNumber>
                <DeliveryRef> </DeliveryRef>
                <Confirm> </Confirm>
                <filler1> </filler1>
            </NS2:IA81CONFIN>
        </tns:Body>
    </tns:Envelope>
    

Descripción de los resultados

El flujo de mensajes de Cliente de servicio web recibe el siguiente mensaje de respuesta para el mensaje de entrada anterior:

<?xml version="1.0"?>
<tns:Envelope xmlns:tns="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:NS1="http://www.brokersamplewshost.ibm.com"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <tns:Body>
        <NS1:IA81CONFOUT>
            <MessageId>IA81CONF</MessageId>
            <OrderNumber>LAB51234</OrderNumber>
            <ItemReference>ITEM12345678</ItemReference>
            <ItemQuantity>qty00005</ItemQuantity>
            <CustomerNumber>CUST34567890</CustomerNumber>
            <DeliveryRef>JOHNCORP</DeliveryRef>
            <Confirm>N</Confirm>
            <filler1>   </filler1>
        </NS1:IA81CONFOUT>
    </tns:Body>
</tns:Envelope>

El mensaje de respuesta.

El flujo de mensajes de Cliente de servicio web genera el mensaje anterior en formato CWF, que se basa en la estructura C tagIA81CONF. La información siguiente detalla los campos y los valores:

typedef struct tagIA81CONF {
   char MessageId[8];           IA81CONF
   char OrderNumber[8];         LAB5123
   char ItemReference[12];      ITEM12345678
   char ItemQuantity[8];        qty00005
   char CustomerNumber[12];     CUST34567890
   char DeliveryRef[8];         JOHNCORP
   char Confirm[1];             N
   char filler1[3];
} IA81CONF;

Cierre la aplicación heredada. Ahora puede eliminar el ejemplo del espacio de trabajo utilizando el asistente Preparar los ejemplos.

Volver a la página inicial del ejemplo