Integrando sua aplicação Spring com WebService JAX-RS RESTful e Jersey

Neste post irei mostrar as alterações que você precisa fazer para sua aplicação que já deve estar funcionando com Spring, ser integrada com JAX-RS, que é uma especificação (a JSR-311) que define a criação de um WebService com arquitetura RESTful, utilizando anotações que diminuem a necessidade de muitas configurações, utilizaremos a implementação Jersey que é open source e referência do JAX-RS.
Se quer saber mais sobre WebService RESTful você pode encontrar uma boa introdução no site da K19.

No caso da minha aplicação estou utilizando Spring 2.5, Hibernate 3.3.2 e JSF 1.2. Caso seu Spring seja de uma versão diferente pode ser que não funcione da mesma forma.


Os jars adicionais que você precisa colocar em sua aplicação são: cglib-nodep-2.1_3.jar, jersey-core-1.5.jar, jersey-json-1.5.jar, jersey-server-1.5.jar, jersey-spring-1.5.jar, json-lib-2.4-jdk15.jar.

No seu arquivo web.xml adicione as seguintes linhas:

<web-app version="2.5">
...
<!-- Jersey servlet -->
<servlet>
<servlet-name>Rest_Servlet</servlet-name>
<servlet-class>com.sun.jersey.spi.spring.container.servlet.SpringServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet> 
<servlet-mapping>
<servlet-name>Rest_Servlet</servlet-name>        
<url-pattern>/*</url-pattern>
</servlet-mapping>
...
</web-app>


No seu applicationContext.xml adicione:
<!-- Coloque em base-package o pacote da sua classe de Serviço -->
<context:component-scan base-package="br.com.fred.exemplo.servico" />


A sua classe de serviço deve ficar como:

@Path("/livros")
@Component
@Service
public class LivroService {

@Autowired

private LivroDAO livroDAO;
        
@GET @Produces("text/xml") 
public List<Livro> getLivros( ){
 //retorna uma lista de livros 
return livroDao.getLivros( ); 
}
@GET
@Path("/id/{id}")
@Produces("text/xml")
 public Livro getLivro(@PathParam("id")String id) {
 Integer intId = Integer.valueOf(id);
 return livroDAO.getLivro(id);
}
}

Sua classe Livro ficará como:

@XmlRootElement
public class Livro {
private int id;
private String titulo;
private String autor;
public Livro() {
}
        //getters e setters
}

Agora basta executar seu projeto e testar, supondo que o nome do projeto é biblioteca e que você está usando o tomcat na porta 8080, basta testar das seguintes formas:
http://localhost:8080/biblioteca/livros (retorna xml com uma lista de livros)
http://localhost:8080/biblioteca/livros/id (retorna xml com um livro com o id especificado)

Qualquer dúvida, deixe nos comentários.



Frederico Maia Arantes
Analista e Desenvolvedor de Sistemas Java EE
Oracle Certified Professional, Java SE 6 Programmer 
Twitter

Comentários

Postagens mais visitadas deste blog

Gerando Documentos Word .docx com Java