Jersey 2.15 is released

We have released Jersey 2.15 – Reference Implementation of JAX-RS 2.0 (Java API for RESTful Web Services). The JAX-RS 2.0 specification is available at the JCP web site.

In this article I’d like to introduce some of the new features, important bug fixes and other noteworthy changes.

This article describe notable changes in Jersey 2.15. Refer to Latest Jersey Versions to find out information and links to the latest version released.

For an overview of all JAX-RS features read the Jersey user guide. To get started with Jersey read the getting started section of that guide. To understand more about what Jersey depends on read the dependencies section. To see the full change log, take a look here.

Container Agnostic CDI Support

Jakub submitted a new feature that allows you to run a Jersey/CDI application outside of a Java EE container (e.g. GlassFish). Now it’s possible to run your application on a lightweight HTTP container (e.g. Grizzly or Netty) or a web-container (e.g. Jetty, Tomcat) while leveraging the benefits of CDI.

There are two new examples available in Jersey code-base:

This feature, however, is a breaking change (so be aware when upgrading to 2.15 from an older version). Some old modules providing CDI support have been removed and replaced with new, more general ones.

If you have a direct reference to the following Jersey CDI support module in your application, for example:

Replace it with this module:

And, if you want to leverage CDI JTA support the following needs to be included in addition to the module above:

Reactive Jersey Client Documentation

I was finally able to finish documentation for Reactive Jersey Clientfeature introduced in Jersey 2.13. The documentation can be found in the Jersey User Guide, Reactive Jersey Client API chapter, or you can find out more about the reactive client in the following blog posts:

In addition to the documentation I have submitted a new sample rx-client-java8-webapp that runs on Java 8 and compares JAX-RS synchronous and asynchronous approaches with reactive approaches using Observable, CompletionStage (CompletableFuture) and ListenableFuture.

Bugs

  • Thanks to Vetle the JAX-RS providers (e.g. ContainerRequestFilter) managed by Spring are now correctly registered and invoked in a JAX-RS application. (Pull Request #108)
  • Oscar fixed a problem with Bean Validation in Jersey. Now it’s possible to put BV constraints on primitive data arrays (e.g. @NotNull) in your beans. (Pull Request #119)
  • Closing ChunkedOutput on the server now correctly closes also the underlying connection even if the close method is invoked before returning a chunked output instance from a resource method. Problem could be encountered only when an application was deployed on a servlet container.

  • A problem in Jersey Proxy Client was preventing to send a request with an entity if a parameter of a proxied resource method was annotated (e.g. with @NotNull). The bug has been fixed thanks to Adam. (Pull Request #129)

Feedback

For feedback send an email to:

users@jersey.java.net (archived here)

or log bugs/features here.

Request

Since there are no articles like this one for Jersey 2.7–2.14 let me know (either in discussion below or via email that can be found on my GitHub profile) if you’d like me to summarize notable changes in those versions as well.