Sobre a Amostra Address Book

A amostra Address Book mostra a você como usar os nós SOAPInput, SOAPReply e SOAPRequest para fornecer e consumir um serviço da Web através de um transporte HTTP ou JMS.

O ponto de início para a amostra é um arquivo WSDL que define um catálogo de endereços, consulte Arquivo WSDL. O arquivo WSDL, que contém as ligações HTTP e JMS, aponta para as operações que estão definidas no WSDL. O serviço da Web executa duas operações; ele armazena os endereços e localiza os endereços. Se você tiver acesso ao WebSphere Application Server, você pode trocar o provedor e o consumidor incluídos nessa amostra com o provedor e o consumidor fornecidos com a amostra Address Book no WebSphere Application Server para SOAP sobre HTTP. A amostra Address Book fornecida com o WebSphere Application Server não suporta transporte SOAP sobre JMS. Para suportar o transporte SOAP sobre JMS, você deve regenerar a amostra de Serviço da Web incluindo uma ligação e porta JMS ao WSDL para interoperar com o WebSphere Application Server, consulte o arquivo WSDL fornecido com esta amostra.

Para criar o conjunto de mensagens e um fluxo de mensagens em branco para o provedor, use o assistente "Iniciar a Partir dos Arquivos WSDL e/ou XSD" com o arquivo WSDL. Depois você pode criar um fluxo de consumidor manualmente.

A amostra do Catálogo de Endereços demonstra as seguintes tarefas:

  1. Como fornecer um serviço da Web usando os nós SOAPInput e SOAPReply.
  2. Como consumir um serviço da Web usando um nó SOAPRequest.

Os Fluxos de Mensagens

A amostra Address Book usa dois fluxos de mensagens. O primeiro fluxo de mensagens fornece um serviço da Web e o outro fluxo de mensagens consome um serviço da Web.

Fluxo do Provedor

O seguinte diagrama mostra o fluxo de mensagens do provedor de serviço da Web:

Fluxo de Mensagens do Provedor de Serviços da Web

A tabela a seguir mostra os nós no fluxo de mensagens do provedor do serviço da Web.

Tipo de Nó Nome de Nó
SOAPInput Entrada SOAP
RouteToLabel RouteToLabel
Rótulo saveAddress
Compute SaveCompute
Rótulo findAddress
Compute FindCompute
SOAPReply Resposta SOAP

O fluxo é construído utilizando um nó SOAPInput e SOAPReply. Para digitar automaticamente todas as propriedades para o nó SOAPInput, arraste o arquivo WSDL no nó SOAPInput. (O arquivo WSDL está localizado no projeto do conjunto de mensagens apenas depois de ter utilizado o assistente "Iniciar dos Arquivos WSDL e/ou XSD".)

O nó SOAPInput recebe as mensagens de SOAP de entrada e, se as mensagens forem válidas, as transmite pelo fluxo de mensagens para o nó RouteToLabel. O nó RouteToLabel encaminha a mensagem ao nó Label, o nome do qual está localizado no ambiente local (OutputLocalEnvironment.Destination.RouterList.DestinationData[1].labelname). Não é necessário configurar este caminho explicitamente quando você está trabalhando com mensagens SOAP de entrada, porque o nó SOAPInput configura automaticamente o caminho para o nome da operação que está sendo chamada. Entretanto, você deve conectar o nó SOAPInput a um nó RouteToLabel e criar um nó Label para cada operação.

Se a operação que está sendo chamada for saveAddress, a mensagem é enviada para o nó SaveCompute, em que o endereço é armazenado em uma variável ESQL compartilhada. As variáveis compartilhadas permanecem para o escopo do fluxo de mensagens; se reimplementar o fluxo de mensagens, endereços salvos serão perdidos.

Se a operação que está sendo chamada for findAddress, a mensagem é enviada para o nó FindCompute, onde a variável compartilhada é consultada para o endereço da pessoa cujo nome é fornecido na mensagem de entrada. Se o endereço for localizado, o endereço será retornado: se o endereço não estiver na variável compartilhada, uma falha SOAP será construída.

Fluxo do Consumidor

A figura a seguir mostra o fluxo de mensagens do consumidor do serviço da Web:

Fluxo de Mensagens do Consumidor de Serviços da Web

A tabela a seguir mostra os nós no fluxo de mensagens do consumidor do serviço da Web:

Tipo de Nó Nome de Nó
MQInput AddressBook_IN
Compute RoutingCompute
RouteToLabel RouteToLabel
Rótulo findAddress
Compute FindCompute
SOAPRequest findAddress
Rótulo saveAddress
Compute SaveCompute
SOAPRequest saveAddress
Compute ComputeResponse
MQOutput AddressBook_OUT
MQOutput AddressBook_FAULT

O fluxo do consumidor do serviço da Web é iniciado por uma mensagem WebSphere MQ que chega na fila monitorada pelo nó MQInput. A mensagem é uma mensagem XML no domínio XMLNSC. Para usar o nó RouteToLabel, deve-se configurar o valor no ambiente local explicitamente para esse fluxo, usando o nó RoutingCompute:

OutputLocalEnvironment.Destination.RouterList.DestinationData[1].labelname = InputRoot.XMLNSC.request.operation 

A mensagem é então roteada para o nó Label correto. O nó Label redireciona a mensagem para um nó Compute que constrói uma mensagem de pedido de saída no domínio SOAP, utilizando a mensagem de entrada. A mensagem é redirecionada para o nó SOAPRequest correto, que chama o fluxo do provedor. A mensagem de retorno é enviada para um nó MQOutput, que grava os dados XML para a fila WebSphere MQ especificada.

As Mensagens

O fluxo de mensagens do consumidor de serviços da Web é conduzido por uma mensagem WebSphere MQ. Um arquivo do Cliente de Teste é fornecido para executar a amostra, utilizando a seguinte mensagem XML. A primeira mensagem armazena um endereço, a segunda mensagem consulta esse endereço. O primeiro elemento especifica a operação que será chamada; o lembrete da mensagem é usado para criar a mensagem SOAP que é enviada ao fluxo do provedor.

<request>
  <operation>saveAddress</operation>
  <Name>Dave</Name>
  <City>Carlisle</City>
  <Street>Welton</Street>
  <Province>Cumbria</Province>
  <PostalCode>NE2 3HP</PostalCode>
  <Area>1</Area>
  <Prefix>2</Prefix>
  <Local>3</Local>
</request> 

A segunda mensagem de entrada, em seguida, consulta esse endereço:

<request>
  <operation>findAddress</operation>
  <Name>Dave</Name>
</request>

As mensagens SOAP também são fornecidas para chamar o fluxo do provedor diretamente. Essas mensagens são equivalentes àquelas que o fluxo de consumidor constrói e envia dos dois nós SOAPRequest. A primeira mensagem SOAP armazena o endereço:

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns3="http://addressbook.com/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <soapenv:Body>
    <ns3:Person>
      <ns3:Name>Dave</ns3:Name>
      <ns3:Address>
        <ns3:City>Carlisle</ns3:City>
        <ns3:Street>Welton</ns3:Street>
        <ns3:Province>Cumbria</ns3:Province>
        <ns3:PostalCode>NE2 3HP</ns3:PostalCode>
        <ns3:PhoneNumber>
          <ns3:Area>1</ns3:Area>
          <ns3:Prefix>2</ns3:Prefix>
          <ns3:Local>3</ns3:Local>
        </ns3:PhoneNumber>
      </ns3:Address>
    </ns3:Person>
  </soapenv:Body>
</soapenv:Envelope>

A segunda mensagem de entrada consulta o endereço:

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="http://addressbook.com/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <soapenv:Body>
    <tns:Name>Dave</tns:Name>
  </soapenv:Body>
</soapenv:Envelope>

Voltar para Home da Amostra