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.
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:
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:
legacyservice qmname qname
no qual qmname é o nome do seu gerenciador de filas e qname é WSHOST1_OUT1
(a partir do primeiro nó MQOutput). Por exemplo:
legacyservice MB8QMGR WSHOST1_OUT1.
Não é possível chamar o aplicativo de legado a partir do WebSphere Message Broker Toolkit.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.
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>
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>
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:
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>
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.