View Source

h1. Welcome to the Community Wiki for Project Jersey\!

[Project Jersey|http://jersey.dev.java.net] is an open source community that is building the production quality reference implementation of [JSR-311: JAX-RS - Java API for RESTful Web Services|http://jsr311.dev.java.net]. Jersey implements support for the annotations defined in JSR-311, making it easy for developers to build RESTful web services with Java and the Java JVM. Besides implementing the JSR-311 API, Jersey provides an additional API not specified by JSR-311 so that developers can extend this JSR to suit their specific needs. This wiki contains information for the developers using Jersey, for the developers improving Jersey, and for the people with a general interest in RESTful Web Services.

We hope that you will find the Jersey Wiki to be a valuable informational resource. We actively encourage you to become a contributor and share your knowledge about Jersey and RESTful Web Services with the rest of the open source community. Contributors to existing or new wiki topics only need to have a registered user id and some knowledge they'd like to share.

If you're new to Jersey and/or RESTful Web Services, and are unable to find the information you need on this wiki page, please leave us a comment and we'll do our best to find the answer and add it to the wiki so that it will be available to all.

h2. What are RESTful Web Services?

RESTful Web services are services that are built to work best on the Web.

Representational State Transfer (REST) is an architectural style that specifies constraints, such as the uniform interface, that if applied to a Web service induce desirable properties, such as performance, scalability and modifiability, that enable services to work best on the Web.

In the REST architectural style, data and functionality are considered resources, and these resources are accessed using Uniform Resource Identifiers (URIs), typically links on the web. The resources are acted upon by using a set of simple, well-defined operations. The REST architectural style constraints an architecture to a client-server architecture, and is designed to use a stateless communication protocol, typically HTTP. In the REST architecture style, clients and servers exchange representations of resources using a standardized interface and protocol. These principles encourages RESTful applications to be simple, lightweight, and have high performance.

To find out more about REST, try these sources for more information:
* Fielding Dissertation: Chapter 5: Representational State Transfer (REST), at [http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm|http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm]
* Wikipedia article on Representational State Transfer (REST), at [http://en.wikipedia.org/wiki/RESTful|http://en.wikipedia.org/wiki/RESTful]

h2. Get Started

# Read the [getting started|https://jersey.dev.java.net/source/browse/*checkout*/jersey/tags/jersey-1.0.3/jersey/getting-started.html] document on how to develop your first simple JAX-RS application with Jersey.
# Read the JAX-RS [Overview of JAX-RS 1.0 Features|Jersey:Overview of JAX-RS 1.0 Features] for many details of the JAX-RS API and deployment using Jersey.
# Read the [dependencies|https://jersey.dev.java.net/source/browse/*checkout*/jersey/tags/jersey-1.0.3/jersey/dependencies.html] document to understand how to use Jersey with maven and the Java.Net maven repository.
# Check out the [samples|http://download.java.net/maven/2/com/sun/jersey/samples/jersey-samples/1.0.3/jersey-samples-1.0.3-project.zip] that ship with Jersey. For more info on the examples, see the section below.
# Read the blogs (referenced below) or read the [Jersey FAQ|http://wikis.sun.com/display/Jersey/FAQ] for information on more advanced topics.
# Read the [Jersey Tutorial|http://docs.sun.com/app/docs/doc/820-4867?l=en], also known as the _RESTful Web Services Developers Guide_. The [PDF version|http://docs.sun.com/app/docs/doc/820-4867?l=en&a=load] can be downloaded here. This tutorial contains the following topics:
## [Chapter 1: Introduction to RESTful Web Services and Jersey|http://docs.sun.com/app/docs/doc/820-4867/ggnyk?l=en&a=view]
## [Chapter 2: Installing Jersey and the Jersey Sample Applicatons|http://docs.sun.com/app/docs/doc/820-4867/ggnxe?l=en&a=view]
## [Chapter 3: Creating a RESTful Resource Class|http://docs.sun.com/app/docs/doc/820-4867/ggnxo?l=en&a=view]
## [Chapter 4: Creating, Deploying, and Running Jersey Applications|http://docs.sun.com/app/docs/doc/820-4867/ggnxs?l=en&a=view]
## [Chapter 5: Jersey Sample Applications|http://docs.sun.com/app/docs/doc/820-4867/ggrby?l=en&a=view]
# Follow the [Jersey Hands-On Lab|http://developers.sun.com/learning/javaoneonline/j1lab.jsp?lab=LAB-5542&yr=2009&track=1]

h2. Learn More

* Browse the [API docs|https://jsr311.dev.java.net/nonav/javadoc/index.html] for JAX-RS 1.0
* Browse the [Jersey 1.0.3 API docs|https://jersey.dev.java.net/nonav/apidocs/1.0.3/jersey/index.html].
* Peruse the Jersey team members blogs:
** Earthly Powers, by Paul Sandoz, at [http://blogs.sun.com/sandoz/category/REST|http://blogs.sun.com/sandoz/category/REST].
** Marc Hadley's Blog, at [http://weblogs.java.net/blog/mhadley/|http://weblogs.java.net/blog/mhadley/].
** Japod's Blog, by Jakub Podlesak, at [http://blogs.sun.com/japod/category/REST].
** Naresh's Blog, at [http://blogs.sun.com/naresh/category/REST].
** Martin Matula's Blog, at [http://blog.alutam.com/category/rest].
* Refer to the [Jersey FAQ|http://wikis.sun.com/display/Jersey/FAQ] for answers to frequently asked questions.

h2. Example Applications

The sample applications, which are listed below, can be downloaded [here|http://download.java.net/maven/2/com/sun/jersey/samples/jersey-samples/1.0.3/jersey-samples-1.0.3-project.zip].

* HelloWorld: This is how everybody starts using Grizzly as in the process HTTP server.
* HelloWorld Web app: This is how everybody starts using a Web application.
* Bookmark Web app: Demonstrates how to use JPA in the backend.
* Bookstore Web app: Demonstrates how to use polymorphism with resources and views that are JSP pages.
* EntityProvider: Demonstrates pluggable entity providers.
* Extended WADL Web app:Demonstrates how to customize generation of WADL.
* Generate WADL: Demonstrates how to customize generation of WADL.
* Jaxb: Demonstrates the use of JAXB-based resources.
* JMaki-backend Web app: Provides JSON to be consumed by jMaki widgets.
* JsonFromJaxb: Demonstrates how to use JSON representation of JAXB-based resources.
* Mandel: A Mandelbrot service written in Scala using Scala's actors to scale-up the calculation.
* OptimisticConcurrency: Demonstrates the application of optimistic concurrency to a web resource.
* SimpleAtomServer:Simple Atom server that partially conforms to the Atom Publishing Format and Protocol.
* SimpleConsole: Demonstrates a simple service using Grizzly.
* SimpleServlet: Demonstrates how to use a Servlet container.
* Sparklines: A sparklines application inspired by Joe Gregorio's python application.
* Spring annotations: An example leveraging Jersey's Spring-based annotation support.
* StorageService: Demonstrates a basic in-memory web storage service.

Here are a few other examples. Please add any others to the list that you find useful.
* Jersey and WADL; [http://wikis.sun.com/display/Jersey/WADL|http://wikis.sun.com/display/Jersey/WADL]
* RESTful Web Services and Comet: [http://developers.sun.com/appserver/reference/techart/cometslideshow.html|http://developers.sun.com/appserver/reference/techart/cometslideshow.html]
* [Jersey WebDAV Support]

h2. General Information

* [Schedule] \- Planned features and Jersey release dates

h2. For Jersey Users

* [External Links] \- Links to articles and blogs containing samples and hints for using Jersey
* [WADL] \- What does jersey provide related to WADL and how this can be used

h2. For Jersey Developers

* [Contributing areas] \- Ideas for how you can contribute
* [Accessing Jersey Issues Tracker using Eclipse IDE] \- How to access the Jersey Issue Tracker using Eclipse IDE

h2. What are Folks from the Open Source Community Saying About JAX-RS and Jersey?

* [JAX-RS as the basis of a DRY web framework|http://macstrac.blogspot.com/2009/01/jax-rs-as-basis-of-dry-web-framework.html]
* [JAX-RS as the one Java web framework to rule them all?|http://macstrac.blogspot.com/2009/01/jax-rs-as-one-web-framework-to-rule.html]
* [Using JAX-RS (Jersey) to build a JPA/JAXB-backed JSON REST API|http://www.javarants.com/2008/12/25/using-jax-rs-jersey-to-build-a-jpajaxb-backed-json-rest-api/]
* [REST Building Momentum|http://blogs.oracle.com/jamesbayer/2008/10/rest_building_momentum.html]

The individuals who post here are part of the extended Sun Microsystems community and they might not be employed or in any way formally affiliated with Sun Microsystems. The opinions expressed here are their own, are not necessarily reviewed in advance by anyone but the individual authors, and neither Sun nor any other party necessarily agrees with them.

Copyright 1994-2009 Sun Microsystems, Inc.
Powered by Atlassian Confluence
Sun Guidelines on Public Discourse Privacy Policy Terms of Use Trademarks Site Map Employment Investor Relations Contact