Menu
Home Explore People Places Arts History Plants & Animals Science Life & Culture Technology
On this page
Jakarta RESTful Web Services
Jakarta EE specification for web services to employ the Representational State Transfer (REST) architectural pattern

Jakarta RESTful Web Services, (JAX-RS; formerly Java API for RESTful Web Services) is a Jakarta EE API specification that provides support in creating web services according to the Representational State Transfer (REST) architectural pattern. JAX-RS uses annotations, introduced in Java SE 5, to simplify the development and deployment of web service clients and endpoints.

From version 1.1 on, JAX-RS is an official part of Java EE 6. A notable feature of being an official part of Java EE is that no configuration is necessary to start using JAX-RS. For non-Java EE 6 environments a small entry in the web.xml deployment descriptor is required.

We don't have any images related to Jakarta RESTful Web Services yet.
We don't have any YouTube videos related to Jakarta RESTful Web Services yet.
We don't have any PDF documents related to Jakarta RESTful Web Services yet.
We don't have any Books related to Jakarta RESTful Web Services yet.
We don't have any archived web articles related to Jakarta RESTful Web Services yet.

Specification

JAX-RS provides some annotations to aid in mapping a resource class (a POJO) as a web resource. The annotations use the Java package jakarta.ws.rs (previously was javax.ws.rs but was renamed on May 19, 20192). They include:

  • @Path specifies the relative path for a resource class or method.
  • @GET, @POST, @PUT, @PATCH (since JAX-RS 2.1), @DELETE, @HEAD and @OPTIONS (since JAX-RS 1.1) specify the HTTP request type of a resource.
  • @Produces specifies the response Internet media types (used for content negotiation).
  • @Consumes specifies the accepted request Internet media types.

In addition, it provides further annotations to method parameters to pull information out of the request. All the @*Param annotations take a key of some form which is used to look up the value required.

  • @PathParam binds the method parameter to a path segment.
  • @QueryParam binds the method parameter to the value of an HTTP query parameter.
  • @MatrixParam binds the method parameter to the value of an HTTP matrix parameter.
  • @HeaderParam binds the method parameter to an HTTP header value.
  • @CookieParam binds the method parameter to a cookie value.
  • @FormParam binds the method parameter to a form value.
  • @DefaultValue specifies a default value for the above bindings when the key is not found.
  • @Context returns the entire context of the object (for example @Context HttpServletRequest request).

JAX-RS 2.0

In January 2011 the JCP formed the JSR 339 expert group to work on JAX-RS 2.0. The main targets are (among others) a common client API and support for Hypermedia following the HATEOAS-principle of REST. In May 2013, it reached the Final Release stage.3

On 2017-08-22 JAX-RS 2.14 specification final release was published. Main new supported features include server-sent events, reactive clients, and JSON-B.5

Implementations

Implementations of JAX-RS include:6

Tutorials

References

  1. Hadley, p. 1.

  2. "Rename package commit on Github". GitHub. https://github.com/eclipse-ee4j/jaxrs-api/commit/e06f5fe15462550887967483b0114fd23f2c972f#diff-ff5bd7d61ca9a56ff62b1cda910659282ebcb2b2830a80fe34f78e4e19bd2c0d

  3. "JSR 339: JAX-RS 2.0: The Java API for RESTful Web Services". Java Community Process. http://jcp.org/en/jsr/detail?id=339

  4. "JSR 370: Java API for RESTful Web Services (JAX-RS 2.1) Specification". Java Community Process. http://jcp.org/en/jsr/detail?id=370

  5. "JSR 367: Java API for JSON Binding (JSON-B)". Java Community Process. http://jcp.org/en/jsr/detail?id=367

  6. Little, Mark (October 1, 2008). "A Comparison of JAX-RS Implementations". http://www.infoq.com/news/2008/10/jaxrs-comparison