SPIs Web Services Addressing Proprietárias da IBM
As interfaces de programação do sistema (SPIs) do Web Services Addressing (WS-Addressing) proprietárias da IBM estendem as interfaces de programação de aplicativos (APIs) do WS-Addressing proprietárias da IBM para permitir a criação e a racionalização sobre o conteúdo das referências de terminais e outros artefatos do WS-Addressing e para configurar ou recuperar as message-addressing properties (MAPs) do WS-Addressing nas mensagens de serviços da Web ou a partir delas.
Não é possível usar as classes de API JAX-WS padrão com essas SPIs proprietárias. Entretanto, é possível converter referências de terminais criadas usando as classes de API JAX-WS padrão para instâncias da classe com.ibm.websphere.wsaddressing.EndpointReference proprietária, usando a classe com.ibm.websphere.wsaddressing.jaxws21.EndpointReferenceConverter. Em seguida, essas referências de terminais convertidas podem ser utilizadas com as SPIs proprietárias.
As interfaces de programação neste tópico são descritas em mais detalhes na documentação da SPI WS-Addressing da IBM.
Criando, Refinando e Racionalizando Sobre o Conteúdo das Referências de Terminal

A SPI estende a API proprietária com.ibm.websphere.wsaddressing.EndpointReference do WS-Addressing para fornecer vários métodos adicionais por meio da interface com.ibm.wsspi.wsaddressing.EndpointReference. É possível converter instâncias de com.ibm.websphere.wsaddressing.EndpointReference em com.ibm.wsspi.wsaddressing.EndpointReference para acessar estas funções adicionais.
De forma semelhante, a SPI com.ibm.wsspi.wsaddressing.EndpointReferenceManager estende o conjunto de funções fornecidas na API com.ibm.websphere.wsaddressing.EndpointReferenceManager.
- Criar Referências ao Terminal
- Crie objetos EndpointReference especificando o URI do terminal que o objeto EndpointReference deve representar, usando a operação createEndpointReference(URI) ou a operação EndpointReferenceManager.createEndpointReference(AttributedURI). Esses métodos diferem do método createEndpointReference fornecido no nível de API, uma vez que não geram automaticamente o URI para a instância EndpointReference. Você pode usar estes métodos quando souber que o URI do terminal é estável, por exemplo, em um ambiente de teste sem restrições de implementação.
- Mapeie entre as representações XML e Java™ de uma referência de terminal
- É possível serializar instâncias da interface EndpointReference para suas instâncias de elemento SOAP correspondentes, usando a operação EndpointReference.getSOAPElement. De modo contrário, é possível desserializar os elementos SOAP de tipo EndpointReferenceType na representação Java EndpointReference, utilizando a operação EndpointReference.createEndpointReference(SOAPElement). É possível achar essas interfaces de serialização e desserialização úteis se estiver criando binders customizados para os tipos que contêm instâncias EndpointReference.
- Utilize tipos de parâmetros de referência mais complexos
- As interfaces proprietárias fornecidas no nível de API estão restritas
a parâmetros de referência do tipo xsd:string para permitir um modelo de programação
mais simples. As SPIs estendem esse suporte para permitir os parâmetros de referência
do tipo <xsd:any>. A interface EndpointReference
fornece mecanismos para obter e configurar parâmetros de referência como
elementos SOAP. Adicionalmente, a classe EndpointReferenceManager fornece
a operação getSOAPElementReferenceParameterFromMessageContext, permitindo
que os terminais de recepção adquiram parâmetros de referência que não
sejam do tipo String a partir da mensagem de entrada.Nota: Ao chamar um serviço com um objeto EndpointReference que contém um parâmetro de referência, você deve criar o parâmetro de referência, usando um objeto QName completo, com todas as partes presentes: espaço de nomes, parte local e prefixo. Se o objeto QName não estiver completo, as chamadas de serviço falharão.
- Configure e racionalize sobre os conteúdos de referência ao terminal
- A interface EndpointReference fornece operações para configurar e racionalizar sobre o conteúdo de uma instância EndpointReference, como suas propriedades de endereço e metadados do WS-Addressing. Interfaces adicionais são fornecidas para representar os artefatos que compõem uma referência de terminal: Metadata, AttributedURI e ServiceName. Você cria instâncias destas interfaces usando operações fornecidas pela classe WSAddressingFactory de proprietário.
- Adquira e altere o espaço de nome suportado
- O suporte ao WS-Addressing neste produto suporta vários espaços de nomes. As operações setNamespace e getNamespace fornecidas na interface EndpointReference proprietária possibilitam alterar e adquirir o espaço de nomes associado a um determinado objeto EndpointReference. A serialização para elementos SOAP está de acordo com o espaço de nomes do objeto EndpointReference. Por padrão, o espaço de nomes da referência de terminal de destino (a referência de terminal configurada como a propriedade com.ibm.websphere.wsaddressing.WSAConstants.WSADDRESSING_DESTINATION_EPR no contexto de pedido do objeto BindingProvider do JAX-WS ou do objeto Stub ou Call do JAX-RPC) define o espaço de nomes das propriedades de endereçamento da mensagem.
Configurando e Recuperando as Propriedades de Endereçamento de Mensagem do WS-Addressing

Configurando as propriedades de endereçamento de mensagem do WS-Addressing nas mensagens de saída:
Nome da propriedade (do tipo Cadeia) | Tipo Java ou valor da propriedade | Nome ou Nomes da MAP abstrata do WS-Addressing, usando a convenção de notação do Conjunto de Informações W3C XML | Valor padrão |
---|---|---|---|
WSADDRESSING_DESTINATION_EPR | com.ibm.websphere.wsaddressing.EndpointReference | [destination] URI |
Não definida Observe que essa propriedade provém da API. |
WSADDRESSING_FROM_EPR | com.ibm.websphere.wsaddressing.EndpointReference | [terminal de origem] | Não definida |
WSADDRESSING_REPLYTO_EPR | com.ibm.websphere.wsaddressing.EndpointReference | [terminal de respostas] | Ou 'none', se a mensagem for uma mensagem unidirecional sem resposta ou não configurada. Para mensagens assíncronas bidirecionais em aplicativos JAX-WS, essa propriedade é gerada automaticamente. Se, nesta situação, você tentar configurar essa propriedade, uma exceção javax.xml.ws.WebServiceException será ativada. Para mensagens síncronas bidirecionais, será possível configurar essa propriedade somente se o endereço de referência de terminal for o URI anônimo. Se o endereço não for o URI anônimo, uma exceção javax.xml.ws.WebServiceException será ativada. |
WSADDRESSING_FAULTTO_EPR | com.ibm.websphere.wsaddressing.EndpointReference | [terminal de falhas] | Não definida Se você tentar configurar essa propriedade para mensagens assíncronas bidirecionais em aplicativo JAX-WS, uma exceção javax.xml.ws.WebServiceException será emitida. Para mensagens síncronas bidirecionais, será possível configurar essa propriedade somente se o endereço de referência de terminal for o URI anônimo. Se o endereço não for o URI anônimo, uma exceção javax.xml.ws.WebServiceException será lançada. |
WSADDRESSING_RELATIONSHIP_SET | java.util.Set contendo instâncias de com.ibm.wsspi.wsaddressing.Relationship | [relationship] | Não definida |
WSADDRESSING_MESSAGE_ID | com.ibm.wsspi.wsaddressing.AttributedURI | [ID de mensagem] | Gerado e configurado para um valor exclusivo |
WSADDRESSING_ACTION | com.ibm.wsspi.wsaddressing.AttributedURI | [ação] | Gerado e configurado, de acordo com a especificação do WS-Addressing |
WSADDRESSING_OUTBOUND_NAMESPACE | Sequência de caracteres | none | O espaço de nomes do WS-Addressing da propriedade WSADDRESSING_DESTINATION_EPR, quando especificado, senão o espaço de nomes padrão |
Recuperando as propriedades de endereçamento de mensagem do WS-Addressing de mensagens de entrada:
Nome da propriedade de contexto da mensagem (do tipo Cadeia) | Tipo Java ou valor da propriedade | Nome da MAP abstrata do WS-Addressing, usando a convenção de notação do Conjunto de Informações W3C XML |
---|---|---|
WSADDRESSING_INBOUND_TO | com.ibm.wsspi.wsaddressing.AttributedURI | [destino] |
Nenhuma propriedade específica. Utilize o método EndpointReferenceManager.getReferenceParameter(QName name) para obter a MAP associada. | Tipo Any | [parâmetros de referência]* |
WSADDRESSING_INBOUND_FROM_EPR | com.ibm.websphere.wsaddressing.EndpointReference | [terminal de origem] |
WSADDRESSING_INBOUND_REPLYTO_EPR | com.ibm.websphere.wsaddressing.EndpointReference | [terminal de respostas] |
WSADDRESSING_INBOUND_FAULTTO_EPR | com.ibm.websphere.wsaddressing.EndpointReference | [terminal de falhas] |
WSADDRESSING_INBOUND_RELATIONSHIP | java.util.Set contendo instâncias de com.ibm.wsspi.wsaddressing.Relationship | [relationship] |
WSADDRESSING_INBOUND_MESSAGE_ID | com.ibm.wsspi.wsaddressing.AttributedURI | [ID de mensagem] |
WSADDRESSING_INBOUND_ACTION | com.ibm.wsspi.wsaddressing.AttributedURI | [ação] |
WSADDRESSING_INBOUND_NAMESPACE | Sequência de caracteres | O espaço de nomes do WS-Addressing da mensagem de entrada |