Especificando e Adquirindo Message-addressing Properties Utilizando SPIs do Web Services Addressing de Propriedade da IBM

O uso de SPIs (interfaces de programação de sistema) de WS-Addressing (Web Services Addressing) possibilita a inclusão de MAPs (Message Addressing Properties) de WS-Addressing nos cabeçalhos SOAP de uma mensagem do cliente de saída, através das propriedades no contexto do pedido BindingProvider de JAX-WS ou do objeto Stub ou Call de JAX-RPC. Quando o nó de extremidade de destino recebe a mensagem, o SPI permite que o nó de extremidade adquira os MAPs através de propriedades no contexto da mensagem.

Sobre Esta Tarefa

Não há nenhuma SPI equivalente no padrão JAX-WS. Se você deseja configurar propriedades de endereçamento de mensagens em um cliente que usa referências de terminais JAX-WS, você deve converter as referências de terminais para as classes proprietárias da IBM, antes de usá-las com essas SPIs.

Conclua esta tarefa se você for um desenvolvedor de serviço da Web que use o suporte ao WS-Addressing ou um programador de sistema que use as SPIs do WS-Addressing proprietárias da IBM para especificar as propriedades de endereçamento de mensagem, como referências de terminal de falha ou de resposta, em mensagens de serviços da Web.

As propriedades que podem ser configuradas ou recuperadas são descritas, com o tipo Java™ de instâncias de propriedades, em SPIs Web Services Addressing Proprietárias da IBM. A maioria das propriedades é do tipo com.ibm.websphere.wsaddressing.EndpointReference, por exemplo, referências de terminais de destino, de resposta ou de falha. A propriedade de relacionamento é um objeto java.util.Set que contém instâncias da classe com.ibm.wsspi.wsaddressing.Relationship. Utilize os relacionamentos quando quiser especificar uma associação entre as mensagens; por exemplo, em uma mensagem de resposta, você poderá especificar o ID da mensagem à qual está respondendo. A propriedade de ação é um objeto AttributedURI que identifica um método ou operação específico no nó de extremidade de destino.
Atenção: As propriedades de ação e de referência do nó de extremidade de destino são requeridas para que a mensagem esteja em conformidade com o WS-Addressing.

Procedimento

  1. No cliente, obtenha a referência de terminal do serviço e associe-a a seu contexto de pedido do objeto BindingProvider, ou ao seu objeto Stub ou Call, conforme descrito em Criando um Aplicativo de Serviço da Web JAX-RPC que Usa Endereçamento de Serviço da Web.
  2. Crie instâncias das propriedades requeridas. Por exemplo, se você desejar especificar uma referência de terminal para a qual o serviço de destino enviará respostas, crie uma instância da classe com.ibm.websphere.wsaddressing.EndpointReference para utilizar como a propriedade WSADDRESSING_REPLYTO_EPR.
  3. Configure as propriedades necessárias associando-as ao contexto de pedido do objeto BindingProvider ou ao objeto Stub ou Call. Se você estiver utilizando um objeto Stub ou Call, utilize o método setProperty(String property_name, Object value). Observe que, ao contrário da referência de terminal necessária para a primeira etapa, estas referências de terminal não precisam ser convertidas em outro tipo, porque elas passam no cabeçalho da mensagem SOAP em vez de passar no corpo. O exemplo a seguir configura uma referência de terminal de destino e uma referência de terminal de resposta em um contexto de pedido do objeto BindingProvider:
    import javax.xml.ws.BindingProvider;
    ...
     javax.xml.ws.Service jaxwsServiceObject=...;
     Printer myPrinterProxy = jaxwsServiceObject.getPort(portName, Printer.class);
     
     javax.xml.ws.BindingProvider myBindingProvider = (javax.xml.ws.BindingProvider)myPrinterProxy;
    
     // Recuperar o contexto de pedido para o objeto BindingProvider
     Map myMap = myBindingProvider.getRequestContext();
    
     // Associe a referência de terminal para o serviço da Web. Esta propriedade é necessária para que a mensagem 
     // seja compatível com WS-Addressing.
      myMap.put(WSADDRESSING_DESTINATION_EPR, destinationEpr);
    
     // Associe a referência de terminal que representa a resposta ao contexto do pedido
     myMap.put(WSADDRESSING_REPLYTO_EPR, replyToEpr);
    Quando ocorrer uma chamada no objeto BindingProvider, Stub ou Call, o produto incluirá as MAPs apropriadas no cabeçalho da mensagem.
  4. No servidor, recupere as MAPs a partir da mensagem de entrada através do objeto javax.xml.ws.WebServiceContext ou javax.xml.rpc.handler.MessageContext atualmente em seu encadeamento. Quando o WebSphere Application Server recebe a mensagem, ele coloca as informações MAP na mensagem de contexto no encadeamento, disponibilizando-as para o serviço. É possível recuperar o contexto da mensagem, por exemplo, utilizando o contexto da sessão do enterprise bean do nó de extremidade. Para obter informações adicionais sobre contextos de mensagens, consulte o padrão JSR-109. O exemplo a seguir recupera a referência de terminal de resposta usando o contexto de serviço da Web:
    import javax.xml.ws.handler.MessageContext;
    import javax.xml.ws.WebServiceContext; 
    ...
    
      // Obtenha o contexto da mensagem a partir do contexto WebService 
      private WebServiceContext wsContext;
      MessageContext context = wsContext.getMessageContext();
    
      // Recupere a referência de terminal de resposta
      replyToEpr = context.getProperty(WSADDRESSING_INBOUND_REPLYTO_EPR);

Ícone que indica o tipo de tópico Tópico de Tarefa



Ícone de registro de data e hora Última atualização: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twbs_wsa_maps
Nome do arquivo: twbs_wsa_maps.html