Executando a Amostra de Serviços da Web Usando Nós HTTP

Ao importar a amostra, você pode receber diversos avisos sobre atributos, mensagens CWR, elementos e o domínio MRM no Toolkit. Estes avisos são conjuntos de mensagens relacionados e não afetam a execução da amostra.

Os serviços da Web que usam a amostra de nós HTTP possuem duas partes:

Se você encontrar algum problema ao executar a amostra, consulte Resolvendo problemas ao executar amostras na documentação do WebSphere Message Broker.

Executando a Amostra Host de Serviço da Web

Quando executar a amostra Host de Serviço da Web, o intermediário recebe e envia de volta uma mensagem SOAP/XML, via protocolo HTTP. O intermediário está atuando como um host de serviço da Web.

O intermediário recolhe os dados dessa mensagem SOAP e gera uma nova mensagem mapeada para um arquivo de cabeçalho C. Essa nova mensagem é enviada para um aplicativo legado usando o WebSphere MQ. O aplicativo legado responde, e dados dessa resposta são colocados dentro da resposta HTTP que é gerada pelo intermediário. O intermediário está a frente de um aplicativo legado como um serviço da Web.

Para executar a amostra Host de Serviço da Web:

  1. Inicie o aplicativo legado.

    O aplicativo legado é gravado em C e iniciado com os dois parâmetros de entrada: um nome do gerenciador de filas e um nome de fila do WebSphere MQ. O aplicativo lê mensagens da fila e do gerenciador de filas, e envia respostas para a fila e o gerenciador de filas especificados nas informações de resposta da mensagem de entrada.

    Duas versões executáveis do aplicativo legado são fornecidas:

    A amostra é configurada para executar o aplicativo de legado usando o gerenciador de filas usado pelo broker e criado pelo assistente Configuração Padrão (MB8QMGR). Caso seu intermediário use um gerenciador de filas diferente para o aplicativo legado, configure seus gerenciadores de filas WebSphere MQ (intermediário e legado) para intercomunicação; você deve também alterar o MQOutput para nó legado no fluxo de mensagens WSHOST_WSHOST1. Configure a propriedade Básica Nome do Gerenciador de Filas para o nome do gerenciador de filas que é usado pelo aplicativo legado.

    Se quiser executar o aplicativo de legado em uma plataforma diferente do Windows ou Linux, os arquivos de origem são fornecidos no projeto WSHOST_LEGACY1. O arquivo de origem C é legacyservice.c, com arquivos de cabeçalho legacyservice.h e legacyservice2.h. Compile usando um compilador de sua escolha, em seguida, execute o aplicativo seguindo as orientações precedentes para parâmetros de entrada.

    As mensagens de entrada e saída são mapeadas para a seguinte estrutura 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;
    

    Essa estrutura é fornecida no arquivo legacyservice.h no projeto WSHOST_LEGACY1. Esse arquivo de cabeçalho também contém outras estruturas.

  2. Coloque uma mensagem SOAP para a URL que está especificada no nó HTTPInput WSHOST_WSHOST1.msgflow. Se não tiver um utilitário para executar essa tarefa, várias ferramentas de freeware estão disponíveis para testar serviços da Web e enviar mensagens SOAP. A mensagem de amostra está no arquivo WSHOST1IN.xml no projeto WSHOST1_MFP1. Se o seu broker estiver na mesma máquina que o seu utilitário HTTP, coloque a mensagem em http://localhost:7080/samplebrokerwshost. Caso contrário, corrija o host local e o número da porta conforme apropriado.

    Todas as mensagens de teste que são usadas na execução desta amostra estão baseadas no seguinte 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>
    

Entendendo os Resultados

A amostra Host de Serviço da Web chama um aplicativo legado com uma mensagem chamada msg_tagIA81CONF. Nessa mensagem, o campo DeliveryRef é configurado para espaço em branco na entrada e, na saída, é configurado para JOHNCORP. O campo Confirmar é configurado para branco na entrada, e na saída é configurado para Y ou N, dependendo se o campo de entrada ItemReference contém o caractere Y.

O código a seguir mostra a mensagem de resposta a partir da mensagem de entrada precedente:

<?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>

Executando a Amostra Cliente de Serviço da Web

Quando você executa a amostra Cliente de Serviço da Web, o intermediário recebe uma mensagem no formato legado através do protocolo do WebSphere MQ. Ele chama um serviço da Web enviando uma mensagem SOAP/XML usando protocolo HTTP. Ele recebe uma resposta de serviço da Web como uma mensagem SOAP/XML, usando HTTP, e envia de volta uma mensagem de resposta legada, usando o WebSphere MQ. O intermediário está atuando como um cliente de serviço da Web.

O intermediário recolhe os dados dessa mensagem legada, que é mapeada para um arquivo de cabeçalho C. Esses dados são usados para construir uma mensagem SOAP/XML que é mapeada para o esquema XML em um arquivo WSDL. O arquivo WSDL foi fornecido por um host de serviço da Web e importado para um conjunto de mensagens no intermediário. Nesta amostra, o host do serviço da Web é a amostra Host do Serviço da Web.

A amostra Host de Serviço da Web deve estar em execução para executar essa amostra Cliente de Serviço da Web.

Para executar a amostra Cliente de Serviço da Web:

  1. O fluxo de mensagens assume que a amostra Host de Serviço da Web esteja em execução no mesmo intermediário que a amostra Cliente de Serviço da Web e que o intermediário esteja utilizando o número da porta HTTP padrão 7080. Se não estiver em execução no mesmo broker ou no número de porta HTTP, adite o host local, o número da porta ou ambos no nó HTTPRequest do fluxo de mensagens, para abordar o Host de Serviço da Web. Deve-se, então, recompilar e implementar o arquivo BAR WSCLIENT.bar para o broker. Esse arquivo está no projeto do Message Broker WSCLIENT_MFP1 em Broker Archives. Pode ser necessário copiar o arquivo para um projeto do domínio antes de poder implementá-lo.
  2. Se ainda não tiver feito isso, implemente o arquivo BAR, WSHOST.bar, no broker. Esse arquivo está no projeto do Message Broker WSHOST_MFP1. Pode ser necessário copiá-lo para um projeto de domínio antes de poder implementá-lo.
  3. Caso você ainda não o tenha feito, inicie o aplicativo legado que a amostra Host de Serviço da Web chama, consulte a seção Executando a Amostra Host de Serviço da Web, deste tópico.
  4. Coloque uma mensagem na fila WebSphere MQ que esteja definida no nó MQInput, o nome da fila é WSCLIENT1_IN1.

    As mensagens de teste de entrada utilizadas na execução dessa amostra são baseadas no seguinte formato:

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

    A mensagem a seguir é enviada para o fluxo de mensagens Host de Serviço da 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>
    

Entendendo os Resultados

A mensagem de resposta a seguir é recebida pelo fluxo de mensagens do Cliente de Serviço da Web para a mensagem de entrada precedente:

<?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>

A mensagem de resposta.

O fluxo de mensagens do Cliente de Serviço da Web emite a mensagem anterior no formato CWF, a qual é baseada na estrutura C tagIA81CONF. As informações a seguir detalham os campos e 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;

Feche o aplicativo legado. Você pode agora remover a amostra de sua área de trabalho usando o assistente Preparar as Amostras.

Voltar para Home da Amostra