Over a million developers have joined DZone.

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

Learn how our document data model can map directly to how you program your app, and native database features like secondary indexes, geospatial and text search give you full access to your data. Brought to you in partnership with MongoDB.

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

Discover when your data grows or your application performance demands increase, MongoDB Atlas allows you to scale out your deployment with an automated sharding process that ensures zero application downtime. Brought to you in partnership with MongoDB.


Opinions expressed by DZone contributors are their own.


Dev Resources & Solutions Straight to Your Inbox

Thanks for subscribing!

Awesome! Check your inbox to verify your email so you can start receiving the latest in tech news and resources.


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

{{ parent.tldr }}

{{ parent.urlSource.name }}