Modelo de Programação de Cliente JAX-WS

O modelo de programação do cliente de serviços da Web Java™ API for XML-Based Web Services (JAX-WS) suporta a API do cliente Dispatch e a API do cliente Proxy Dinâmico. A API cliente Dispatch é o modelo de programação de cliente dinâmico, considerando que o modelo de programação de cliente estático para JAX-WS é o cliente de Proxy Dinâmico. Os clientes Dispatch e Proxy Dinâmico permitem chamada síncrona e assíncrona de serviços da Web JAX-WS.

  • Cliente Dispatch: Use este cliente quando quiser trabalhar no nível de mensagem XML ou para trabalhar sem nenhum artefato gerado no nível de JAX-WS.
  • Cliente Proxy Dinâmico: Use esse cliente quando desejar chamar um serviço da Web baseado em uma interface de terminal em serviço.

Cliente Dispatch

Os serviços da Web baseados em XML usam mensagens XML para comunicação entre serviços da Web e clientes de serviços da Web. AS APIs JAX-WS fornecem métodos de alto nível para simplificar e ocultar os detalhes de conversão entre as chamadas do método Java e suas mensagens XML associadas. Entretanto, em alguns casos, talvez você queira trabalhar no nível de mensagem XML. O suporte para chamar serviços no nível de mensagem XML é fornecido pela API cliente Dispatch. A API cliente Dispatch,javax.xml.ws.Dispatch, é uma interface de programação de cliente JAX-WS dinâmica. Para gravar um cliente Dispatch, é necessário ter experiência com APIs clientes Dispatch, os tipos de objeto suportados e conhecimento das representações de mensagem para o arquivo WSDL (Web Services Description Language) associado. O cliente Dispatch pode enviar dados no modo MESSAGE ou PAYLOAD. Ao utilizar o modo javax.xml.ws.Service.Mode.MESSAGE, o cliente Dispatch é responsável pelo fornecimento de todo o envelope SOAP, incluindo os elementos <soap:Envelope>, <soap:Header> e <soap:Body>. Ao utilizar o modo javax.xml.ws.Service.Mode.PAYLOAD, o cliente Dispatch só é responsável pelo fornecimento do conteúdo do <soap:Body> e o JAX-WS inclui a carga útil em um elemento <soap:Envelope>.

A API cliente Dispatch requer que os aplicativos clientes construam mensagens ou cargas úteis como XML, que requer um conhecimento detalhado da mensagem ou da carga útil de mensagem. O cliente Dispatch suporta os seguintes tipos de objetos:
  • javax.xml.transform.Source: Use objetos Source para permitir que os clientes usem as APIs XML diretamente. É possível usar objetos Source com ligações SOAP ou HTTP.
  • Objetos JAXB: Utilize os objetos JAXB para que os clientes possam utilizar os objetos JAXB que são gerados a partir de um esquema XML para criar e manipular XML com aplicativos JAX-WS. Os objetos JAXB só podem ser usados com ligações SOAP e HTTP.
  • javax.xml.soap.SOAPMessage: Use objetos SOAPMessage para que os clientes possam trabalhar com mensagens SOAP. Você só pode usar objetos SOAPMessage com ligações SOAP.
  • javax.activation.DataSource: Use objetos DataSource para que os clientes possam trabalhar com MIME (Multipurpose Internet Mail Extension). Use DataSource somente com ligações HTTP.
Por exemplo, se o tipo de parâmetro de entrada forjavax.xml.transform.Source, a chamada para a API cliente Dispatch será semelhante ao seguinte exemplo de código:
Dispatch<Source> dispatch = … create a Dispatch<Source>
Source request = … create a Source object
Source response = dispatch.invoke(request);
O valor do parâmetro Dispatch determina o tipo de retorno do método invoke().
O cliente Dispatch é chamado de uma das três maneiras:
  • Chamada síncrona para pedidos e respostas usando o método invoke
  • Chamada assíncrona para pedidos e respostas usando o método invokeAsync com um retorno de chamada ou objeto de sondagem
  • Chamada de um sentido usando métodos invokeOneWay

Consulte o Capítulo 4, seção 3 da especificação JAX-WS para obter informações adicionais sobre a utilização de um cliente Dispatch.

Cliente de Proxy Dinâmico

O modelo de programação de cliente estático para JAX-WS é o chamado cliente de Proxy Dinâmico. O cliente Proxy Dinâmico chama um serviço da Web baseado em uma Service Endpoint Interface (SEI) que deve ser fornecida. O cliente de Proxy Dinâmico é semelhante ao cliente stub no modelo de programação JAX-RPC (Java API for XML-based RPC). Embora o cliente de Proxy Dinâmico do JAX-WS e o cliente stub JAX-RPC sejam baseados em SEI, que é gerada de um arquivo WSDL, há uma diferença importante. O cliente de Proxy Dinâmico é dinamicamente gerado no tempo de execução utilizando a funcionalidade de Proxy Dinâmico do Java 5, enquanto o cliente stub com base em JAX-RPC é um arquivoJava não portátil gerado por ferramentas. Diferentemente dos clientes stubs JAX-RPC, o cliente de Proxy Dinâmico não requer que você gere novamente um stub antes de executar o cliente em um servidor de aplicativos para um fornecedor diferente porque a interface gerada não requer as informações do fornecedor específico.

As instâncias de Proxy Dinâmico estendem a classe java.lang.reflect.Proxy e potencializam a função de Proxy Dinâmico no Java SE Runtime Environment (JRE) 6 de base. O aplicativo cliente pode fornecer uma interface que seja utilizada para criar a instância de proxy enquanto o tempo de execução é responsável pela criação dinâmica de um objeto Java que representa o SEI.

O cliente de Proxy Dinâmico é chamado de uma das três maneiras:
  • Chamada síncrona para pedidos e respostas usando o método invoke
  • Chamada assíncrona para pedidos e respostas usando o método invokeAsync com um retorno de chamada ou objeto de sondagem
  • Chamada de um sentido usando métodos invokeOneWay

Consulte o Capítulo 4 da especificação JAX-WS para obter informações adicionais sobre o uso de clientes de Proxy Dinâmico.


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



Í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=cwbs_jaxwsclients
Nome do arquivo: cwbs_jaxwsclients.html