criando um web service restful com jersey, eclipse, jboss, tomcat, websphere

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

If you can't read please download the document

Upload: juliano-martins

Post on 15-Apr-2017

1.986 views

Category:

Technology


2 download

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!