Web Services RESTful
Passo a Passo para criação de um Web Service
RESTfull com Jersey / Eclipse / Tomcat
Testado também em JBoss e WebSphere
Juliano Marcos Martins
juliano.jmm@gmail.com
http://jmmwrite.wordpress.com
Jersey
● API Java que implementa JAX-RS
● Open source
● Utilitários
● https://jersey.java.net/index.html
● Especificação https://jax-rs-spec.java.net/
Passo 1
● Baixar a Jersey de https://jersey.java.net/download.html
OBS: Existem várias formas diferentes de se implementar, a utilizada aqui, é a que considero a mais simples.
Meu fim é didático, não me preocupo nesse momento em desenvolver um código a prova de falhas.
Passo 2
● Criar um projeto Dinâmico WEB no Eclipse
● Dei o nome de RestTeste
● Adicionei o projeto a um EAR chamado RestTeste
● Marquei a opção abaixo para gerar o web.xml (caso nao
tenha marcado, é possível 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 serviços que criarei.
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<display-name>RestTeste</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<description>JAX-RS Tools Generated - Do not modify</description>
<servlet-name>Jersey REST Service</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey REST Service</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
</web-app>
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 iríamos efetuar uma invocação 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.
● Também teríamos preocupação com algum mecanismo de
segurança para não expor para o mundo um serviço 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 acessível pela URL
http://127.0.0.1:8080/RestTeste/rest/clientes/
Próximos passos
● Como sugestão de estudo, é interessante construir um
CRUD.
● Uma dúvida comum é como receber parametros para
Inserir/Alterar/Excluir informações, uma forma simples é
com o código do proximo slide.
Passo 9
● O método abaixo recebe parâmetros, 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
Conclusão
● A ponta do Iceberg é essa. Com esta apresentação você
consegue construir um simples CRUD.
● Cada vez mais o mundo demanda Web Services,
principalemente com o número crescende de aplicações
móveis que acessam aplicativos WEB e Legadas.
● Tenha em mente que implementar um serviço é relativamente
fácil, qualquer pessoa implementa, porém, a preocupação
com segurança e escalabilidade (volumetria/carga), não são
comuns. Cuidado com os problemas que isso possa te gerar!
● Enjoy!

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

  • 1.
    Web Services RESTful Passoa Passo para criação de um Web Service RESTfull com Jersey / Eclipse / Tomcat Testado também em JBoss e WebSphere Juliano Marcos Martins juliano.jmm@gmail.com http://jmmwrite.wordpress.com
  • 2.
    Jersey ● API Javaque implementa JAX-RS ● Open source ● Utilitários ● https://jersey.java.net/index.html ● Especificação https://jax-rs-spec.java.net/
  • 3.
    Passo 1 ● Baixara Jersey de https://jersey.java.net/download.html OBS: Existem várias formas diferentes de se implementar, a utilizada aqui, é a que considero a mais simples. Meu fim é didático, não me preocupo nesse momento em desenvolver um código a prova de falhas.
  • 4.
    Passo 2 ● Criarum projeto Dinâmico WEB no Eclipse ● Dei o nome de RestTeste ● Adicionei o projeto a um EAR chamado RestTeste ● Marquei a opção abaixo para gerar o web.xml (caso nao tenha marcado, é possível gerar posteriormente)
  • 5.
    Passo 3 ● Adicionaras libs abaixo da Jersey ao WEB-INF/lib do projeto
  • 6.
    Passo 4 ● Altereio arquivo WEB.XML – adicionei a parte em laranja, nela, estou mapeando os serviços que criarei. <?xml version="1.0" encoding="UTF-8"?> <web-app id="WebApp_ID" version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> <display-name>RestTeste</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> <servlet> <description>JAX-RS Tools Generated - Do not modify</description> <servlet-name>Jersey REST Service</servlet-name> <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Jersey REST Service</servlet-name> <url-pattern>/rest/*</url-pattern> </servlet-mapping> </web-app>
  • 7.
    Passo 5 ● Crieiuma classe chamada ClienteServico
  • 8.
    Passo 6 ● Implementeio 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; } }
  • 9.
    Passo 6.1 ● Noexemplo, estou simplesmente listando algo “hardcoded”. ● Normalmente, neste ponto iríamos efetuar uma invocação 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. ● Também teríamos preocupação com algum mecanismo de segurança para não expor para o mundo um serviço dessa forma.
  • 10.
    Passo 7 ● Clicamosno projeto criado e vamos em Run on Server para testar:
  • 11.
    Passo 8 ● Oprojeto deve subir sem erros e ser acessível pela URL http://127.0.0.1:8080/RestTeste/rest/clientes/
  • 12.
    Próximos passos ● Comosugestão de estudo, é interessante construir um CRUD. ● Uma dúvida comum é como receber parametros para Inserir/Alterar/Excluir informações, uma forma simples é com o código do proximo slide.
  • 13.
    Passo 9 ● Ométodo abaixo recebe parâmetros, 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; }
  • 14.
    Passo 9 ● Invoque-outilizando a URL http://127.0.0.1:8080/RestTeste/rest/clientes/inserir? nome=juliano&endereco=ruax&rg=5555555555599
  • 15.
    Conclusão ● A pontado Iceberg é essa. Com esta apresentação você consegue construir um simples CRUD. ● Cada vez mais o mundo demanda Web Services, principalemente com o número crescende de aplicações móveis que acessam aplicativos WEB e Legadas. ● Tenha em mente que implementar um serviço é relativamente fácil, qualquer pessoa implementa, porém, a preocupação com segurança e escalabilidade (volumetria/carga), não são comuns. Cuidado com os problemas que isso possa te gerar! ● Enjoy!