Labs SD >

Web Services Implementation-First

Objetivos

 

Web Services

Um serviço é uma funcionalidade de um sistema de informação que pode ser invocada remotamente através da rede.
Um Web Service é um serviço que usa os protocolos de comunicação da World Wide Web - HTTP sobre TCP sobre IP - e protocolos adicionais para descrever mensagens e dados - SOAP sobre XML.

Para permitir uma definição rigorosa das operações e dos tipos de dados dos Web Services são usadas as linguagens WSDL (Web Services Description Language) e XSD (XML Schema Definition), respetivamente.

Para a publicação e pesquisa de Web Services usa-se um servidor de nomes que implementa a norma UDDI (Universal Description, Discovery and Integration). No Sun RPC usa-se o rpcbind, no Java RMI usa-se o rmiregistry, nos Web Services usa-se o jUDDI (Java UDDI).

Para uma explicação mais detalhada destas tecnologias, ver:

 

JAX

As bibliotecas JAX (Java API for XML) são a família de bibliotecas da plataforma Java que lidam com tecnologias baseadas em XML, como é o caso dos Web Services.

A JAX-WS (Java API for XML Web Services) é uma biblioteca para Java que permite implementar Web Services, usando as normas: HTTP/TCP/IP para mensagens, SOAP/XML para mensagens, WSDL e XSD para descrição.

Para comunicar com servidores UDDI, existe a biblioteca JAX-R (Java API for XML Registries), que permite publicar, pesquisar e eliminar registos de Web Services.

Para uma explicação mais detalhada destas tecnologias, ver:

O esquema de dados do UDDI é consideravelmente mais rico do que o habitual num servidor de nomes, com diversas entidades e relações, que permitem guardar informação de negócio sobre a organização e os seus serviços. Como consequência, o JAX-R é uma biblioteca verbosa, que obriga a escrever muitas linhas de código para realizar as tarefas mais habituais de registo e de pesquisa.

Para tornar a utilização do UDDI mais simples foi criada a biblioteca UDDINaming que simplifica o esquema de dados para suportar apenas:
1 organização, 1 serviço e 1 implementação.
Esta biblioteca, cujo código está disponível para consulta e modificação, torna o registo e pesquisa de serviços mais sucinto.

 


Exemplo

Vamos então ver um exemplo de um Web Service feito em Java, que usa a biblioteca UDDINaming para comunicar com o servidor de nomes.

Nota: As pastas que contêm o código não devem ter espaços no seu caminho.

  1. jUDDI
  2. UDDINaming
  3. Servidor JAX-WS
  4. É possível implementar Web Services partindo de código Java já existente. Esta abordagem de desenvolvimento designa-se por implementation-first. Para transformar um tipo Java num Web Service, basta usar a anotação @WebService. As descrições em WSDL e XSD são geradas automaticamente quando o servidor se executa.

  5. Cliente JAX-WS

Resumo

Primeiro foi lançado o servidor de nomes jUDDI.
Depois foi instalada a biblioteca UDDINaming no repositório Maven local, que testa também o funcionamento do servidor jUDDI.
Em seguida, foi construído e iniciado o servidor, que se regista no jUDDI e fica à espera de pedidos no endpoint address.
Finalmente, o cliente obtém o WSDL a partir do servidor e gera o código de invocação que permite depois fazer invocações remotas.

Depois de testado o Exemplo, passar ao Exercício.

 


Exercício

Partindo do exemplo acima, foi construído um novo Web Service Tic Tac Toe (jogo do galo).
Tic Tac Toe

 

  1. No servidor (ttt-ws_juddi):
  2.  

  3. No cliente (ttt-ws-cli_juddi):

Perguntas

  1. Estude o WSDL gerado. Consegue mapear o código Java para as definições WSDL e XSD?
  2. Onde, no WSDL, é especificado o tipo de argumentos do Web Service?
  3. Compare o WSDL gerado com o ficheiro ttt.x do servidor SUN RPC do ttt.
    1. Que informação é comum a ambos os ficheiros?
    2. Que informação existe no WSDL mas não existe no .x?
  4. Identifique a função de cada ficheiro gerado no cliente (ignore os ficheiros ObjectFactory.java e package-info.java na sua resposta).

O resto do enunciado será entregue na aula.
O objetivo será estender ou modificar as funcionalidades disponíveis.

 

Entrega da solução

Fénix, Avaliação, Projetos, mini Exercício 3 - Web Services

A solução completa deverá ser submetida no Fénix antes do fim da sua aula de laboratório.
Emails recebidos depois do fim da aula não serão considerados.

Ter atenção ao seguinte:


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