Anotações do JAX-WS
A JAX-WS (Java™ API for XML-Based Web Services) depende do uso de anotações para especificar metadados associados às implementações de serviços da Web e para simplificar o desenvolvimento de serviços da Web. As anotações descrevem como uma implementação de serviço do lado do servidor é acessada como um serviço da Web ou como uma classe Java do lado do cliente acessa os serviços da Web.
O padrão de programação JAX-WS introduz suporte para as classes Java de anotação com metadados que são usados para definir um aplicativo de terminal de serviço como um serviço da Web e como um cliente pode acessar o serviço da Web. O JAX-WS suporta o uso de anotações baseadas no Recurso de Metadados da especificação Java Programming Language (JSR (Java Specification Request) 175), nos Metadados de Serviços da Web da especificação Java Platform (JSR 181) e nas anotações definidas pela especificação JAX-WS 2.0 e posterior (JSR 224) que inclui as anotações do JAXB. Usando as anotações a partir do padrão JSR 181, é possível apenas anotar a classe de implementação de serviço ou a interface de serviço e como o aplicativo é ativado como um serviço da Web. A utilização de anotações dentro da origem Java simplifica o desenvolvimento e a implementação de serviços da Web pela definição de algumas das informações adicionais que são tipicamente obtidas a partir de arquivos descritores de implementação, arquivos WSDL ou metadados de mapeamento a partir de XML e WSDL em artefatos de origem.
Utilize anotações para configurar ligações, cadeias de manipulador, nomes de portType, serviço e outros parâmetros WSDL. Anotações são usadas no mapeamento Java para WSDL e no esquema e no tempo de execução para controlar como o tempo de execução JAX-WS processa e responde às chamadas de serviço da Web.
Para serviços da web JAX-WS, o uso do descritor de implementação webservices.xml é opcional porque é possível usar anotações para especificar todas as informações que estão contidas dentro do arquivo do descritor de implementação. É possível utilizar o arquivo do descritor de implementação para aumentar ou substituir anotações JAX-WS existentes. Qualquer informação definida no descritor de implementação webservices.xml substitui quaisquer informações correspondentes especificadas pelas anotações.
A partir do WebSphere Application Server Versão 7.0 e mais recentes, os módulos do aplicativo Java EE 5 (módulos do aplicativo da web versão 2.5 ou mais recente ou módulos EJB versão 3.0 ou mais recente) são varridos para verificar anotações para identificar serviços e clientes JAX-WS. Entretanto, os módulos aplicativos pré-Java EE 5 (módulos aplicativos da Web versão 2.4 ou anterior, ou módulos EJB versão 2.1 ou anterior) não são varridos para localizar anotações JAX-WS, por padrão, por contraprestações de desempenho.
- A propriedade UseWSFEP61ScanPolicy pode ser configurada no
META-INF/MANIFEST.MF de um arquivo WAR ou módulo EJB como true. Exemplo:
Se essa propriedade estiver configurada como true no arquivo META-INF/MANIFEST.MF do módulo, o módulo será varrido para localizar anotações de JAX-WS, independentemente da versão Java EE do módulo. O valor padrão é false e quando o valor padrão está em vigor, as anotações JAX-WS são suportadas apenas em módulos cuja versão é Java EE 5 ou posterior.Versão do Manifest: 1.0 UseWSFEP61ScanPolicy: true
- É possível configurar a propriedade customizada JVM (Java Virtual Machine) com.ibm.websphere.webservices.UseWSFEP61ScanPolicy utilizando o console administrativo. Consulte a documentação das propriedades customizadas JVM para obter o caminho de navegação correto a ser utilizado. Para solicitar varredura de anotações em todos os módulos, independentemente da versão do Java EE, configure a propriedade customizada com.ibm.websphere.webservices.UseWSFEP61ScanPolicy como true. Você deve alterar a configuração em cada servidor que requeira uma mudança no comportamento padrão.
![[z/OS]](../images/ngzos.gif)


- tipos como uma classeJava, numeração ou interface
- métodos
- campos que representam as variáveis locais dentro de uma classe Java
- parâmetros em um métodoJava
Classe de anotação | Anotação | Propriedades |
---|---|---|
javax.jws. WebService | A anotação @WebService marca uma classe Java como uma implementação de um serviço da Web ou marca uma Service Endpoint Interface (SEI) como uma implementação de uma interface de serviço da Web. Importante:
|
|
javax.jws. WebMethod | A anotação @WebMethod denota um método que é uma operação
de serviço da Web. Aplique esta anotação aos métodos em um SEI (Service Endpoint Interface) de cliente ou servidor ou em uma classe de implementação de terminal de servidor. |
|
javax.jws. Oneway | A anotação @Oneway denota um método como uma operação unidirecional de serviço
da Web que possui apenas uma mensagem de entrada e nenhuma mensagem de saída. Aplique esta anotação aos métodos em um SEI (Service Endpoint Interface) de cliente ou servidor ou em uma classe de implementação de terminal de servidor. |
|
javax.jws. WebParam | A anotação @WebParam customiza o mapeamento de um parâmetro
individual para uma parte de mensagem para um elemento
XML de serviço da Web. Aplique esta anotação aos métodos em um SEI (Service Endpoint Interface) de cliente ou servidor ou em uma classe de implementação de terminal de servidor. |
|
javax.jws. WebResult | A anotação @WebResult customiza o mapeamento de um valor de retorno para uma parte WSDL ou um elemento XML. Aplique esta anotação aos métodos em um SEI (Service Endpoint Interface) de cliente ou servidor ou em uma classe de implementação de terminal de servidor. |
|
javax.jws. HandlerChain | A anotação @HandlerChain associa o serviço da Web a uma cadeia
manipuladora definida externamente. Só é possível configurar o manipulador do lado do servidor utilizando a anotação @HandlerChain na SEI (Service Endpoint Interface) ou na classe de implementação do terminal do servidor. Utilize uma das diversas maneiras de configurar um manipulador no cliente. É possível configurar um manipulador no cliente utilizando a anotação @HandlerChain na classe de serviço gerada ou na SEI. Além disso, você pode registrar programaticamente sua própria implementação da interface HandlerResolver no Service ou configurar programaticamente a cadeia de manipuladores no objeto Binding. |
|
javax.jws. SOAPBinding | A anotação @SOAPBinding especifica o mapeamento do serviço
da Web no protocolo de mensagem SOAP. Aplique essa anotação a um tipo ou a métodos em uma SEI (Service Endpoint Interface) de cliente ou servidor ou em uma classe de implementação de terminal de servidor. A anotação do nível de método é limitada em o que ela pode especificar e será utilizada apenas se a propriedade style for DOCUMENT. Se a anotação de nível do método não for especificada, será utilizado o comportamento @SOAPBinding do tipo. |
|
Classe de anotação | Anotação | Propriedades |
---|---|---|
javax.xml.ws. Action | A anotação @Action especifica a ação de WS-Addressing
associada a uma operação de serviço da Web. Ao usar essa anotação com um método específico e gerar o documento WSDL correspondente, o atributo de extensão Action do WS-Addressing é incluído nos elementos de entrada e saída da operação WSDL correspondente a esse método. Para incluir esse atributo na operação WSDL, também será necessário especificar a anotação @Addressing na classe de implementação do terminal do servidor. Se não quiser usar a anotação @Addressing, poderá fornecer seu próprio documento WSDL com o atributo Action já definido. |
|
javax.xml.ws. BindingType | A anotação @BindingType especifica a ligação a ser utilizada ao publicar um terminal desse tipo. Aplique essa anotação a uma classe de implementação de terminal do servidor. Importante: É possível usar a anotação @BindingType na classe de implementação do terminal do JavaBeans para ativar o MTOM especificando javax.xml.ws.soap.SOAPBinding.SOAP11HTTP_MTOM_BINDING ou javax.xml.ws.soap.SOAPBinding.SOAP12HTTP_MTOM_BINDING como o valor para a anotação.
|
|
javax.xml.ws. FaultAction | A anotação @FaultAction especifica a ação de WS-Addressing
incluída em uma resposta de falha. Essa anotação deve estar contida em uma anotação @Action. 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 incluir esse atributo na operação WSDL, também será necessário especificar a anotação @Addressing na classe de implementação do terminal do servidor. Se não quiser usar a anotação @Addressing, poderá fornecer seu próprio documento WSDL com o atributo Action já definido. |
|
javax.xml.ws. RequestWrapper | A anotação @RequestWrapper fornece o bean do wrapper de pedido gerado pelo JAXB, o nome de elemento e o espaço de nomes para serialização e desserialização com o bean do wrapper de pedido utilizado em tempo de execução. Ao começar com um objetoJava, esse elemento é utilizado para resolver conflitos de sobrecarga no modo literal do documento. Somente o atributo className é necessário neste caso. Aplique esta anotação aos métodos em um SEI (Service Endpoint Interface) de cliente ou servidor ou em uma classe de implementação de terminal de servidor. |
|
javax.xml.ws. ResponseWrapper | A anotação @ResponseWrapper fornece o bean do wrapper de resposta gerado pelo JAXB, o nome de elemento e o espaço de nomes para serialização e desserialização com o bean do wrapper de resposta utilizado em tempo de execução. Ao começar com um objetoJava, esse elemento é utilizado para resolver conflitos de sobrecarga no modo literal do documento. Somente o atributo className é necessário neste caso. Aplique esta anotação aos métodos em um SEI (Service Endpoint Interface) de cliente ou servidor ou em uma classe de implementação de terminal de servidor. |
|
javax.xml.ws. RespectBinding | A anotação @RespectBinding especifica se
a implementação JAX-WS deve usar o conteúdo do wsdl:binding para
um terminal. Quando essa anotação é especificada, é executada uma verificação para assegurar que todos os elementos de extensibilidade WSDL necessários com o atributo ativado configurado como true sejam suportados. Aplique esta anotação para métodos em uma classe de implementação de terminal do servidor. |
|
javax.xml.ws. ServiceMode | A anotação @ServiceMode especifica se um provedor de serviços precisa ter acesso a uma mensagem de protocolo inteira ou apenas à carga útil da mensagem. Importante: A anotação @ServiceMode é suportada apenas nas classes anotadas com a anotação @WebServiceProvider.
|
|
javax.xml.ws. soap.Addressing | A anotação @Addressing especifica que esse
serviço quer ativar o suporte ao WS-Addressing. Aplique esta anotação para métodos em uma classe de implementação de terminal do servidor. |
|
javax.xml.ws. soap.MTOM | A anotação @MTOM especifica se o conteúdo
binário no corpo de uma mensagem SOAP é enviado utilizando-se MTOM. Aplique essa anotação a uma classe de implementação do terminal em serviço. |
|
javax.xml.ws. WebFault | A anotação @WebFault mapeia as falhas de WSDL para as exceções Java. Ela é utilizada para capturar o nome da falha durante a serialização do tipo JAXB que é gerado a partir de um elemento global mencionado por uma mensagem de falha de WSDL. Ela pode ser utilizada também para customizar o mapeamento de exceções específicas do serviço para falhas de WSDL. Essa anotação pode ser aplicada apenas a uma classe de implementação de falha no cliente ou servidor. |
|
javax.xml.ws. WebServiceProvider | A anotação @WebServiceProvider indica que uma classe atende aos requisitos de uma classe de implementação JAX-WS Provider. Importante:
|
|
javax.xml.ws. WebServiceRef | A anotação @WebServiceRef define uma referência para um serviço da Web chamado pelo cliente. Nota:
|
|
javax.xml.ws. WebServiceRefs | A anotação @WebServiceRefs associa várias anotações
@WebServiceRef a uma classe específica. Nota: A anotação @WebServiceRef só é suportada em determinados tipos de classes. Alguns
exemplos: classes de implementação de terminal JAX-WS, classes do manipulador JAX-WS, classes Enterprise JavaBeans
e classes de servlet. Essa anotação é suportada nos mesmos tipos de classes
que a anotação @Resource. Consulte a especificação Java EE (Java Platform, Enterprise Edition)
5 para obter uma lista completa de tipos de classes suportados.
|
|
Classe de anotação | Anotação | Propriedades |
---|---|---|
javax.annotation. Resource | A anotação @Resource marca um recurso WebServiceContext
que é necessário para o aplicativo. Nota:
Aplicar essa anotação a um campo de tipo WebServiceContext na classe de implementação de terminal do servidor para um terminal JavaBeans ou um terminal de Provedor resulta no contêiner injetando uma instância do WebServiceContext no campo especificado. Quando essa anotação é utilizada no lugar da anotação @WebServiceRef, as regras descritas para a anotação @WebServiceRef são aplicadas. |
|
javax.annotation. Resources | A anotação @Resources associa várias anotações @Resource a uma classe específica e serve como contêiner para várias declarações de recursos. |
|
javax.annotation. PostConstruct | A anotação @PostConstruct marca um método
que precisa ser executado depois que a injeção de dependência é executada na classe. Aplique essa anotação a um manipulador de aplicativo JAX-WS, uma classe de implementação de terminal do servidor. |
|
javax.annotation. PreDestroy | A anotação @PreDestroy marca um método que
deve ser executado quando a instância está no processo de ser removida pelo contêiner. Aplique essa anotação a um manipulador de aplicativo JAX-WS ou a uma classe de implementação de terminal do servidor. |
|
Classe de anotação | Anotação | Propriedades |
---|---|---|
com.ibm.websphere. wsaddressing. jaxws21. SubmissionAddressing | A anotação @SubmissionAddressing especifica
que esse serviço quer ativar o suporte ao WS-Addressing para a especificação 2004/08
WS-Addressing. Essa anotação faz parte da implementação da IBM da especificação JAX-WS 2.1. Aplique esta anotação para métodos em uma classe de implementação de terminal do servidor. |
|