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:
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 seu intermediário for utilizar um gerenciador de filas diferente para o aplicativo legado, você vai precisar configurar seus gerenciadores de fila do WebSphere MQ (intermediário e legado) para a 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.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
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> </c:IA81CONFIN> </soapenv:Body> </soapenv:Envelope>
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.
Se você estiver utilizando Nettool, a área de janela direita conterá a resposta HTTP.
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> </NS1:IA81CONFOUT> </tns:Body> </tns:Envelope>