Setting Up JAX-RS in Pre-Java EE 6 Environments

DZone 's Guide to

Setting Up JAX-RS in Pre-Java EE 6 Environments

· Java Zone ·
Free Resource

The JAX-RS API for developing RESTful web services is a Java EE 6 API. Java EE 5 application servers and Tomcat don't come with JAX-RS, so you will need to add it into your project. This article shows how to use Sun's Jersey implementation with Maven, and in case you are interested, how to integrate it with Spring.

Start by adding dependencies to your Maven pom.xml:


<name>Java.net Repository for Maven</name>

The Jersey implementation is a servlet, but you can also use it as a servlet filter. I found that using it as a servlet made it either not respond to any requests, or it would break other things like JSF. So, I recommend using the servlet filter approach:

<filter-name>Jersey Web Application</filter-name>
<filter-name>Jersey Web Application</filter-name>


This configures Jersey to respond to /rest/* URIs. It also enables the logging filter so you can see the request and response headers and bodies. The PostReplaceFilter enables support for sending an X-HTTP-Method-Override header in POST requests to translate it into a PUT or DELETE. This is necessary for supporting some RESTful web service clients that don't support PUT or DELETE.

The com.sun.jersey.config.property.packages init-param tells Jersey which package(s) to recursively scan for classes that have JAX-RS annotations. I think you can separate multiple packages with a semicolon.

Your JAX-RS resources are managed by Jersey. You can inject Spring beans into it using the com.sun.jersey.spi.inject.Inject annotation, as long as you have the jersey-spring dependency added to your pom.xml in Maven. For example:

  package com.ryandelaplante.example;  

import com.sun.jersey.spi.inject.Inject;
import javax.ws.rs.Consumes;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;

public class OrdersResource {
private OrderService orderService;


The OrderService will be loaded from the Spring container.

From http://www.ryandelaplante.com


Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}