criando um web service restful com jersey, eclipse, jboss, tomcat, websphere
TRANSCRIPT
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!