Anotações Web Services Addressing
A especificação WS-Addressing fornece mecanismos neutros de transporte para endereçar serviços da Web e facilitar endereçamento de ponta a ponta. Se você tiver um aplicativo JAX-WS poderá usar anotações Java em seu código para especificar o comportamento do WS-Addressing no tempo de execução.
É possível usar anotações WS-Addressing para ativar o suporte do WS-Addressing, especificar se as informações do WS-Addressing são necessárias nas mensagens recebidas, controlar o padrão de troca de mensagens que o serviço suporta e especificar ações a serem associadas a uma operação do serviço da Web ou resposta com falha.
- javax.xml.ws.Action
- Especifica a ação que está associada a uma operação de serviço da Web.
- Ao seguir uma abordagem ascendente para o desenvolvimento de serviços da Web JAX-WS, é possível gerar um documento WSDL a partir do código de aplicativo Java usando a ferramenta da linha de comandos wsgen. Entretanto, para que esse atributo seja incluído na operação WSDL, você também deve especificar a anotação @Addressing na classe de implementação. O resultado no documento WSDL gerado é que as anotações Action terão o atributo wsam:Action nos elementos input message e output message do wsdl:operation. Como alternativa, se você não deseja usar a anotação @Addressing, poderá fornecer seu próprio documento WSDL com o atributo Action já definido.
- Ao seguir uma abordagem descendente para o desenvolvimento de serviços da Web JAX-WS, é possível gerar o código de aplicativo Java a partir de um documento WSDL existente usando a ferramenta da linha de comandos wsimport. Nesses casos, o código Java resultante conterá as anotações Action e FaultAction corretas.
- Se esta ação não for especificada nas anotações do código ou no documento WSDL, o padrão de ação padrão conforme
definido naespecificação Web Services
Addressing 1.0 Metadata é usado. Consulte esta especificação para obter detalhes completos.Nota: Enquanto o ambiente de tempo de execução do WebSphere Application Server suporta o atributo wsaw:Action descontinuado, se você tentar gerar o código Java a partir de um documento WSDL antigo contendo o atributo wsaw:Action descontinuado, este atributo será ignorado.
- javax.xml.ws.FaultAction
- Especifica a ação que é incluída em uma resposta falha. Ao usar essa anotação com um método específico, o atributo de extensão FaultAction do WS-Addressing é incluído no elemento de falha da operação WSDL correspondente a esse método. Para este atributo ser incluído na operação WSDL, você também deve especificar a anotação Addressing na classe de implementação. Se você não quiser utilizar a anotação Addressing, poderá fornecer ao seu próprio documento WSDL o atributo Action já definido. Essa anotação deve estar contida em uma anotação Action.
- Os documentos WSDL gerados a partir do código do aplicativo Java contendo a anotação FaultAction do WS-Addressing
terão o atributo wsam:Action no elemento fault message da
wsdl:operation.Nota: Para garantir que quaisquer classes de Exceção customizadas gravadas sejam mapeadas de forma bem-sucedida para o documento WSDL gerado, estenda a classe java.lang.Exception em vez da classe java.lang.RuntimeException.
- javax.xml.ws.soap.Addressing
- Especifica que esse serviço deseja ativar o suporte de WS-Addressing. Você pode utilizar essa anotação somente no bean de implementação de serviço; não é possível utilizá-la na interface com o terminal de serviço.
- com.ibm.websphere.wsaddressing.jaxws21.SubmissionAddressing
- Essa anotação é parte da implementação IBM da especificação JAX-WS. Esta anotação especifica que este serviço deve ativar o suporte ao WS-Addressing para a especificação 2004/08 WS-Addressing. Você pode utilizar essa anotação somente no bean de implementação de serviço; não é possível utilizá-la na interface com o terminal de serviço.
Para obter informações adicionais sobre as anotações Addressing e SubmissionAddressing, incluindo exemplos de códigos, consulte Ativando o Suporte do Web Services Addressing para Aplicativos JAX-WS Usando Anotações de Endereçamento.
@WebService(name = "Calculator")
public interface Calculator {
...
@Action(
input="http://calculator.com/inputAction",
output="http://calculator.com/outputAction",
fault = { @FaultAction(className=AddNumbersException.class,
value="http://calculator.com/faultAction")
}
)
public int add(int value1, int value2) throws AddNumbersException {
return value1 + value2;
}
}
Se você usar uma ferramenta para gerar artefatos de serviços a partir do código, as tags WSDL que são geradas
a partir do exemplo anterior são como a seguir:<definitions targetNamespace="http://example.com/numbers" ...>
...
<portType name="AddPortType">
<operation name="Add">
<input message="tns:AddInput" name="Parameters"
wsam:Action="http://calculator.com/inputAction"/>
<output message="tns:AddOutput" name="Result"
wsam:Action="http://calculator.com/outputAction"/>
<fault message="tns:AddNumbersException" name="AddNumbersException"
wsam:Action="http://calculator.com/faultAction"/>
</operation>
<portType>
...
<definitions>