Web Service REST - Chamando um web service REST com JSF
O serviço web (web service) é uma forma de integração bem utilizada atualmente para realizar a integração entre aplicações. O Web Service REST é uma das formas de criar um serviço web, que utilizada muito o protocolo HTTP para realizar essa integração entre as aplicações.
O Web Service REST pode disponibilizar através do protocolo HTTP métodos para manipulação de informações, por exemplo: ao fazer uma requisição HTTP através do método GET para a URL http://localhost:8080/CinemaREST/servico/filmes é possível obter um recurso, que nesse caso é uma lista de filmes. Se chamar essa URL através de um navegador podemos verificar o retorno desse Web Service REST.
Para consumir um Web Service REST, existem diversas implementações possíveis, uma delas é através da API Jersey, que é a implementação de referência do JavaEE.
Crie uma aplicação web chamada CinemaJSF, que utiliza o framework do JavaServer Faces para criação das páginas WEB.
Vamos alterar uma página inicial index.xhtml, para que ela utilize um managed bean para consumir esse web serviço, a página ficará assim:
O outputText irá chamar o método getFilmesEmCartaz() da managed bean CinemaMB, que chama o web service REST que traz todos os filmes em cartaz.
Para utilizar a API do Jersey dentro da aplicação, clique com o botão direito do mouse em cima do nome do projeto e escolha o item Propriedades. Na tela de propriedades acesse a categoria Bibliotecas e adicione a biblioteca Jersey 1.8 (JAX-RS RI) através do menu Adicionar Biblioteca.
Vamos criar a managed bean CinemaMB com a implementação do método:
Com a classe Client é possível obter um resource web (recurso web) através da
URL do web service REST, e com esse recurso é possível chamar os métodos que o web service REST suporta, como: get, post, put, delete, etc.
Ao chamar o método wr.get(String.class), estamos esperando que a chamada para esse serviço devolva uma String, nesse exemplo essa String vem no formato JSON (JavaScript Object Notation), mas poderia ser uma String simples, um formato XML, etc. Ao executar a aplicação CinemaJSF teremos a seguinte tela:
Para converter esse JSON em objeto Java, podemos usar uma API simples do Google chamada gson (https://code.google.com/p/google-gson) que realiza essa conversão de maneira fácil. Primeiro vamos criar a classe Filme que irá representar cada filme da lista:
Adicione a bibioteca do gson no projeto, clique com o botão direito do mouse em cima do nome do projeto e escolha o item Propriedades. Na tela de propriedades acesse a categoria Bibliotecas e adicione a biblioteca gson-2.2.2.jar através do menu Adicionar JAR / Pasta.
Vamos alterar o CinemaMB para utilizar a API do gson e converter o JSON em uma lista de filmes:
Agora vamos mudar a página index.xhtml para mostrar uma tabela com os filmes: