A amostra Consumidor Assíncrono mostra como é possível usar nós assíncronos para chamar um serviço da Web. O Web Services Definition Language (WSDL) do serviço da Web é importado no conjunto de ferramentas e usado para configurar o nó SOAPAsyncRequest para chamar operações expostas pelo serviço da Web. Essa amostra também demonstra como interfaces existentes do WebSphere MQ podem ser estendidas para fazer solicitações de serviço da Web.
A amostra usa inicialmente transporte HTTP, mas ela pode ser modificada para usar JMS; consulte Configurando a Amostra Consumidor Assíncrono para Usar um Transporte JMS.
Na amostra, o serviço da Web é um serviço de ordenação simplificado que expõe uma operação. O serviço da Web é fornecido como um fluxo de mensagens na amostra. O serviço da Web sempre retorna uma resposta indicando que a parte ordenada está disponível; uma opção para a extensão do serviço da Web pode ser usar um nó Database para consultar um banco de dados de estoque.
A amostra de Cliente Assíncrono demonstra as seguintes tarefas:
O diagrama a seguir mostra o fluxo de mensagens do cliente da Web:
Tipo de Nó | Nome de Nó |
---|---|
MQInput | MQWSInput |
MQOutput | MQWSOutput |
Compute | Pedido de Processamento, Formatar Resposta |
SOAPAsyncRequest | Pedido Assíncrono SOAP |
SOAPAsyncResponse | Resposta Assíncrona SOAP |
Um pedido de serviço da Web é construído a partir de uma mensagem do WebSphere MQ usando o nó de Compute Request no domínio SOAP. A operação de serviço da Web é chamada usando-se o nó SOAP Asynchronous Request e o nó SOAP Asynchronous
Response que é seu par recebe a resposta.
Finalmente, o nó Formatar Resposta formata a resposta da mensagem do WebSphere MQ.
O diagrama a seguir mostra o fluxo de mensagens de serviço da Web:
Tipo de Nó | Nome de Nó |
---|---|
SOAPInput | Entrada SOAP |
RouteToLabel | Encaminhar Operação WS |
Rótulo | submitPO |
Compute | Resposta do Processamento |
SOAPReply | Resposta SOAP |
Uma mensagem SOAP de entrada é enviada ao nó submitPO usando o nó Encaminhar Operação WS. Neste exemplo, apenas uma operação é exposta pelo serviço da Web de amostra. É possível usar vários nós Label para manipular as diferentes operações quando seu serviço da Web expõe mais do que uma operação. A resposta SOAP é gerada no nó Compute Response, antes de a resposta ser enviada de volta ao cliente da Web.
O fluxo de mensagens do cliente da Web é conduzido por uma mensagem do WebSphere MQ. Um arquivo do Cliente de Teste é fornecido para execução da amostra, o arquivo usa o formato de mensagem mostrado na captura de tela a seguir:
O formato válido para uma mensagem de pedido e uma mensagem de resposta de serviço da Web é mostrado na extração de esquema editada a seguir:
<xsd:element name="submitPORequest"> ... <xsd:complexType> <xsd:sequence> <xsd:element name="partNo" type="xsd:string"/> <xsd:element name="partQuantity" type="xsd:int"/> <xsd:element name="personName"> <xsd:complexType> <xsd:sequence> <xsd:element name="firstName" type="xsd:string"/> <xsd:element name="lastName" type="xsd:string"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="address"> <xsd:complexType> <xsd:sequence> <xsd:element name="street" type="xsd:string"/> <xsd:element name="city" type="xsd:string"/> <xsd:element name="zipCode" type="xsd:string"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element>
<xsd:element name="submitPOResponse"> ... <xsd:complexType> <xsd:sequence> <xsd:element name="orderStatus" type="xsd:string"/> <xsd:element name="orderAmt" type="xsd:int"/> <xsd:element name="partNo" type="xsd:string"/> <xsd:element name="partQuantity" type="xsd:int"/> </xsd:sequence> </xsd:complexType> </xsd:element>
Depois de executar a amostra, você pode querer estendê-la para enviar uma mensagem de pedido que não seja válida. Para enviar uma mensagem de pedido que não seja válida, você deve editar o nó Compute Request para incluir elementos inválidos no corpo da mensagem SOAP. O Terminal de Falha no nó SOAPAsyncRequest deve ser conectado porque uma mensagem de falha SOAP é gerada pelo serviço da Web. Para obter detalhes adicionais sobre falhas de SOAP, consulte A Falha de SOAP na documentação do WebSphere Message Broker.