Criando Web Service Rest JSON com Eclipse e Tomcat 7

Com o avanço das aplicações Mobile, as tecnologias REST e JSON estão ganhando mercado a cada dia. Como estas tecnologias são muito recentes, os desenvolvedores ainda não sabem como gerar seus Web Services REST JSON corretamente. Existem diversos experimentos utilizando servlets, Webservices SOAP, JBoss, GlassFish, etc. Todos funcionam muito bem. Mas a praticidade muitas vezes pode se tornar o diferencial na geração e manutenção de um serviço.

Desta forma, nada melhor que usar o velho e bom Tomcat para gerar Web Services REST JSON. Nativamente o Tomcat não possui suporte para estas tecnologias, mas você pode incluir alguns JARs que irão prover todos os recursos necessários.

Para montar sua arquitetura Web Service REST JSON com Tomcat você irá precisar:

1. Baixar o Apache Tomcat 7.0 e instalá-lo em sua máquina.

2. Baixar o Eclipse Juno e instalá-lo em sua máquina.

3. Obter os jars:

  • resteasy-jaxb-provider-2.2.3.GA.jar
  • resteasy-jaxrs-2.2.3.GA.jar
  • resteasy-jettison-provider-2.2.3.GA.jar
  • jaxrs-api-2.2.3.GA.jar
  • jettison-1.2.jar
  • jsr250-api-1.0.jar
  • httpclient-4.0.3.jar
  • httpcore-4.0.1.jar
  • scannotation-1.0.3.jar

Depois de tudo baixado, vamos configurar a arquitetura:

1. Primeiro crie um Dymanic Web Project

2. Crie uma classe que será seu endpoint. Dentro desta classe, coloque os mapeamentos para os métodos do seu serviço:

@Path("/servicoWS")
public class MeuServicoWS {

@GET
@Path("/WSChecarVersao")
@Produces("application/json")
public void WSChecarVersao() {

}

@GET
@Path("/WSChecarLogin")
@Produces("application/json")
public void WSChecarLogin() {

}

}

3. Crie uma classe que será seu interceptor estendendo Application.

import java.util.HashSet;
import java.util.Set;

import javax.ws.rs.core.Application;

public class RestfulApp extends Application {
private Set<Object> singletons = new HashSet<Object>();
private Set<Class<?>> empty = new HashSet<Class<?>>();

public RestfulApp() {
this.singletons.add(new MeuServicoWS());
}

@Override
public Set<Class<?>> getClasses() {
return this.empty;
}

@Override
public Set<Object> getSingletons() {
return this.singletons;
}
}

4. O próximo passo é incluir dentro do arquivo web.xml a chamada do interceptor para o serviço.

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">
<display-name>MyServer</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>

<context-param>
<param-name>resteasy.servlet.mapping.prefix</param-name>
<param-value>/rest</param-value>
</context-param>
<servlet>
<servlet-name>resteasy-servlet</servlet-name>
<servlet-class>
org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher</servlet-class>
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>com.framework.service.RestfulApp</param-value>
</init-param>
</servlet>

<resource-env-ref>
<resource-env-ref-name>bean/Security</resource-env-ref-name>
<resource-env-ref-type>java.util.Properties</resource-env-ref-type>
</resource-env-ref>

<servlet-mapping>
<servlet-name>resteasy-servlet</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>

</web-app>

Agora é só adicionar seu projeto no Tomcat e rodar. As chamadas cliente devem ser feitas via consumo de JSON.

Se você quiser saber mais sobre programação Java, .Net, Android, IOS, Banco de Dados, Análise de Sistemas, Pontos de Função, faça nossos treinamentos e conheça a Framework Training Center – Comprometimento em Qualidade de Ensino.

 

 

1 Comment

  • camilo lopes Posted 08/07/2013 14:42

    Muito bom o post. Simples, direto e objetivo.
    Excelente Giovanni.

Add Comment

Your email address will not be published. Required fields are marked *

Phone: (31) 3646-1612
Fax: (31) 3646-1614
Loja 01, Lourdes, Belo Horizonte/MG
Rua Rio de Janeiro, 1278