Executando a Amostra de Serviço da Web

A amostra do Serviço da Web tem duas partes:

Executando a Amostra Host de Serviço da Web

Quando você executa a amostra Host de Serviço da Web, o intermediário recebe uma mensagem SOAP/XML através do protocolo HTTP e envia de volta uma mensagem de resposta SOAP/XML, utilizando novamente o HTTP. Assim, o intermediário está agindo 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. Ela é enviada para um aplicativo legado utilizando o WebSphere MQ. O aplicativo legado responde e os dados dessa resposta são colocados na resposta HTTP que o intermediário gera. Desse modo, o intermediário confrontou 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 legado utilizando o mesmo gerenciador de filas do WebSphere MQ que o intermediário. Se o seu intermediário utiliza um gerenciador de filas diferente para o aplicativo legado, configure seus gerenciadores de fila do WebSphere MQ (intermediário e legado) para intercomunicação.

    Você também deve fazer uma pequena alteração no MQOutput para o nó legado no fluxo de mensagens WSHOST_WSHOST1. Configure a propriedade Básica Nome do Gerenciador de Filas como o nome do gerenciador de filas do aplicativo legado.

    Caso queira executar o aplicativo legado em uma plataforma que não seja Windows ou Linux, os arquivos de origem serão fornecidos no projeto WSHOST_LEGACY. O arquivo de origem C é legacyservice.c, com arquivos de cabeçalho legacyservice.h e legacyservice2.h. Compile utilizando um compilador de sua escolha e, em seguida, execute o aplicativo seguindo as orientações acima para os 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;
    

    Isso é fornecido no arquivo legacyservice.h do projeto WSHOST_LEGACY. Observe que esse arquivo de cabeçalho também contém outras estruturas.

  2. Coloque uma mensagem SOAP na URL especificada no nó HTTPInput. Se você não tiver um utilitário para fazer isso, existem diversas ferramentas freeware disponíveis.

    Todas as mensagens de teste utilizadas na execução dessa amostra sã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. Na mensagem, um campo chamado DeliveryRef é configurado em branco na entrada, e na saída é configurado como JOHNCORP. Além disso, um campo chamado Confirm é configurado em branco na entrada, e na saída é configurado como Y ou N, dependendo se o campo de entrada ItemReference contiver o caractere Y.

A mensagem de resposta da mensagem de entrada acima é a seguinte:

<?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 utilizando o protocolo HTTP. Ele recebe uma resposta do serviço da Web como uma mensagem SOAP/XML, utilizando novamente HTTP e envia de volta uma mensagem de resposta legada, utilizando MQ. Assim, o intermediário está agindo 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. Os dados desse arquivo são utilizados 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. Aqui, o host de serviço da Web é a amostra Host de 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 esse não for o caso, corrija o é, o número da porta, ou ambos, no nó HTTPRequest do fluxo de mensagens para endereçar o Host de Serviço da Web. Você deve então recompilar e implementar o arquivo bar, WSCLIENT.bar, para o intermediário. Esse arquivo está no projeto de fluxo de mensagens WSCLIENT_MFP1. Talvez você precise copiá-lo para um projeto de domínio antes de poder implementá-lo.
  2. Se ainda não tiver feito isso, implemente o arquivo bar WSHOST.bar no intermediário. Este arquivo está no projeto do fluxo de mensagens WSHOST_MFP1.Talvez você precise copiá-lo para um projeto de domínio antes de poder implementá-lo.
  3. Se ainda não tiver feito isso, inicie o aplicativo legado que a amostra Host de Serviço da Web chama (veja acima).
  4. Coloque uma mensagem na fila do 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 enviada ao fluxo de mensagens do Host de Serviço da Web é da seguinte forma:

    
    <?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 recebida pelo fluxo de mensagens do Cliente de Serviço da Web para a mensagem de entrada acima é da seguinte forma:

<?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 acima no formato CWF. Isso é baseado na estrutura C tagIA81CONF, definida acima. Os campos e valores são da seguinte forma:

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;

Ícone Página Principal   Voltar para Home da Amostra