Criando um Web Service Restful com Jersey, Eclipse, JBoss, Tomcat, WebSphere

Embed Size (px)

Citation preview

Web Services RESTful

Passo a Passo para criao de um Web Service RESTfull com Jersey / Eclipse / Tomcat

Testado tambm em JBoss e WebSphere

Juliano Marcos [email protected]://jmmwrite.wordpress.com

Jersey

API Java que implementa JAX-RS

Open source

Utilitrios

https://jersey.java.net/index.html

Especificao https://jax-rs-spec.java.net/

Passo 1

Baixar a Jersey de https://jersey.java.net/download.html

OBS: Existem vrias formas diferentes de se implementar, a utilizada aqui, a que considero a mais simples. Meu fim didtico, no me preocupo nesse momento em desenvolver um cdigo a prova de falhas.

Passo 2

Criar um projeto Dinmico WEB no Eclipse

Dei o nome de RestTeste

Adicionei o projeto a um EAR chamado RestTeste

Marquei a opo abaixo para gerar o web.xml (caso nao tenha marcado, possvel gerar posteriormente)

Passo 3

Adicionar as libs abaixo da Jersey ao WEB-INF/lib do projeto

Passo 4

Alterei o arquivo WEB.XML adicionei a parte em laranja, nela, estou mapeando os servios que criarei.

RestTesteindex.htmlindex.htmindex.jspdefault.htmldefault.htmdefault.jspJAX-RS Tools Generated - Do not modifyJersey REST Servicecom.sun.jersey.spi.container.servlet.ServletContainer1Jersey REST Service/rest/*

Passo 5

Criei uma classe chamada ClienteServico

Passo 6

Implementei o Web Service. Veja que anotei com @Path para ouvir em /clientes.

O metodo ir listar clientes no formato JSON

package br.com.jmmwrite.servicos;

import javax.ws.rs.GET;import javax.ws.rs.Path;import javax.ws.rs.Produces;import javax.ws.rs.core.Context;import javax.ws.rs.core.MediaType;import javax.ws.rs.core.UriInfo;

@Path("/clientes")public class ClientesServico {

@GET@Produces(MediaType.APPLICATION_JSON + ";charset=utf-8")public String selectAll() {String clientes = "{'nome': 'Cliente 1','endereco': 'Rua do Cliente 1','RG':3030030066},"+ "{'nome': 'Cliente 2','endereco': 'Rua do Cliente 2','RG':1010010011}";return clientes;}

}

Passo 6.1

No exemplo, estou simplesmente listando algo hardcoded.

Normalmente, neste ponto iramos efetuar uma invocao a um DAO que iria trazer os dados do banco, e utilizariamos alguma API, tal como GSON, para transformar a lista de clientes num objeto Json bem formatado.

Tambm teramos preocupao com algum mecanismo de segurana para no expor para o mundo um servio dessa forma.

Passo 7

Clicamos no projeto criado e vamos em Run on Server para testar:

Passo 8

O projeto deve subir sem erros e ser acessvel pela URL http://127.0.0.1:8080/RestTeste/rest/clientes/

Prximos passos

Como sugesto de estudo, interessante construir um CRUD.

Uma dvida comum como receber parametros para Inserir/Alterar/Excluir informaes, uma forma simples com o cdigo do proximo slide.

Passo 9

O mtodo abaixo recebe parmetros, adicione o mesmo ao seu Web Service:

@GET@Path("/inserir")@Produces(MediaType.APPLICATION_JSON + ";charset=utf-8")public String insertCliente(@Context UriInfo uriInfo ) {// queryParam

String nome = uriInfo.getQueryParameters().getFirst("nome");String endereco = uriInfo.getQueryParameters().getFirst("endereco");String rg = uriInfo.getQueryParameters().getFirst("rg");

String cliente = "{'nome': '" + nome + "','endereco': '" + endereco + "','rg':" + rg + "}";

return cliente;

}

Passo 9

Invoque-o utilizando a URL http://127.0.0.1:8080/RestTeste/rest/clientes/inserir?nome=juliano&endereco=ruax&rg=5555555555599

Concluso

A ponta do Iceberg essa. Com esta apresentao voc consegue construir um simples CRUD.

Cada vez mais o mundo demanda Web Services, principalemente com o nmero crescende de aplicaes mveis que acessam aplicativos WEB e Legadas.

Tenha em mente que implementar um servio relativamente fcil, qualquer pessoa implementa, porm, a preocupao com segurana e escalabilidade (volumetria/carga), no so comuns. Cuidado com os problemas que isso possa te gerar!

Enjoy!