Labs SD > Web Services

JAX-WS


JAX-WS

Definição

A Java XML API for Web Services é uma biblioteca de Web Services para Java, que permite implementar serviços baseados nas normas XSD, WSDL e SOAP.

A JAX-WS define o mapeamento de WSDL para Java e vice-versa. O mapeamento pode ser configurado através de anotações no WSDL ou no código Java.

Com a JAX-WS é possível implementar Web Services partindo de um contrato WSDL ou partindo de código Java. A abordagem preferida para garantir a interoperabilidade é partir do contrato WSDL.

Com a JAX-WS é também possível criar código cliente de invocação de Web Services.

 

Chamadas remotas de procedimento

A JAX-WS é uma biblioteca de "chamadas remotas de procedimento" (em inglês, RPC - Remote Procedure Call). A figura seguinte apresenta a estrutura de um RPC genérico.

rpc

O objectivo do RPC é permitir ao programa cliente invocar funções do programa servidor (remotas) como se fossem funções locais. Todos os aspectos de comunicação e de representação de dados são tratados pela biblioteca de RPC e por objectos gerados automaticamente designados por stubs e ties.

Os stubs e ties são objectos que convertem da representação de dados no programa cliente e no programa servidor (ex. objectos Java) para uma representação em formato standard, para transportar na rede (ex. XML).

Passos de execução de um RPC:

  1. O programa cliente invoca uma função dos 'stubs';
  2. Os 'stubs' convertem os objectos argumento numa mensagem;
  3. Depois, usam o 'run-time' da biblioteca e estabelecem uma ligação com o servidor através da rede;
  4. A mensagem gerada pelos 'stubs' é transmitida;
  5. O 'run-time' do servidor recebe a mensagem;
  6. Os 'ties' convertem a mensagem para objectos;
  7. O servidor recebe os objectos, processa o pedido e gera objectos de resultado;
  8. Os objectos de resultado são convertidos pelos 'ties' numa mensagem de resposta, que é devolvida ao cliente;
  9. O 'run-time' do cliente recebe a resposta;
  10. Os 'stubs' convertem a resposta para objectos;
  11. O programa cliente recebe os objectos de resposta, como se tivesse apenas acabado de chamar uma função local.

Enquanto a chamada remota foi efectuada, o programa cliente ficou bloqueado à espera. A chamada bloqueante é síncrona.

A figura seguinte mostra em detalhe a estrutura do JAX-WS.

jax-ws

O contrato WSDL define o acordo entre cliente e servidor. Como é independente da plataforma, permite que os programas cliente e servidor sejam desenvolvidos em plataformas diferentes (ex. Java e Microsoft Dot Net).


© Docentes de Sistemas Distribuídos, Dep. Eng. Informática, Técnico Lisboa