Releases: javaee/jersey
2.19
Release date: 29-Jun-2015
Bug
- [JERSEY-2626] - Glassfish / Jersey throws NPE on startup of versioned app
- [JERSEY-2843] - InboundMessageContext.hasEntity() fails to catch IllegalStateException even though it tries to.
- [JERSEY-2846] - When throwing an Exception in a Multipart File upload resource, the tmp file is not deleted
- [JERSEY-2865] - BufferOverflowException in SSE
- [JERSEY-2871] - LoggingFilter does not match request and response numbers (like jersey 1.x did)
- [JERSEY-2891] - ExceptionMapper not chosen correctly in case of multiple ExtendedExceptionMappers with same generic type
Pull Requests
- [Pull 175] - JERSEY-2891: ExceptionMapper not chosen correctly in case of multiple ExtendedExceptionMappers with same generic type
- [Pull 172] - JERSEY-2880: Link HTTP Header: Headers may contain double-quote-less parameters.
- [Pull 168] - JERSEY-2871: use same prefix id for request and its response
- [Pull 167] - JERSEY-2626: Fix for Versioned Applications
- [Pull 165] - JERSEY-2865: Fixed BufferOverflowException in SSE
2.18
Release date: 05-Jun-2015
Highlights
Updated to MOXy 2.6
Jersey has updated version of MOXy (XML/JSON provider) to version 2.6. Among some bug fixes there are other notable changes (some of them breaking) that you should be aware of:
Redesign of type property in JSON processing - Special handling of JSON
type
property is deprecated. If there is need to identify type of JSON object - due to missing root element or some special inheritance requirements, it is necessary to specify fully qualified type property withhttp://www.w3.org/2001/XMLSchema-instance
namespace.
Promoted Public Beta APIs
Several experimental Jersey APIs have matured enough and as such we have decided to promote them from Beta status, namely:
Jersey Reactive Client API. Also Reactive Client moved from incubator to extension (umbrella) module.
Jersey client-side ClientLifecycleListener SPI.
Jersey server-side ContainerLifecycleListener SPI.
Jersey server-side (MVC) @ErrorTemplate annotation.
Jersey test framework (client-side) LoopBackConnectorProvider connector.
Jersey test framework (server-side) ContainerRequestBuilder class.
These APIs are now part of the official public Jersey 2.x API.
Bug
- [JERSEY-2140] - Update MOXy to 2.5.2
- [JERSEY-2624] - Docs and jersey-spring3 POM not aligned
- [JERSEY-2688] - Memory leak with the shutdown hooks queue when changing the state of a unique client for each requests
- [JERSEY-2691] - freemarker-webapp example does not work when running as a WAR
- [JERSEY-2730] - Calling AsyncResponse.resume(Throwable) with null hangs up the service
- [JERSEY-2772] - Tomcat memory leak on undeploy
- [JERSEY-2786] - Memory leak with shutdown hooks, caused by configuration inheritance
- [JERSEY-2794] - Aborted multipart upload leaves non-empty MIME*.tmp tempfile behind
- [JERSEY-2812] - Thread not released when Jersey configured as a filter
- [JERSEY-2819] - ServletContainer hangs on startup - infinite loop
- [JERSEY-2824] - ObjectGraphImpl throwing NullPointerException when role entity has an abstract method implementation returning a custom object
- [JERSEY-2837] - GrizzlyConnector can cause Jersey to return premature end stream
- [JERSEY-2850] - GrizzlyHttpContainer throws exception if query string contains '\'
Improvement
- [JERSEY-705] - Ability to share a single web server across multiple tests
- [JERSEY-2805] - Allow JerseyTest to create client with non-default ClientBuilder
- [JERSEY-2818] - RolesAllowedDynamicFeature can return 401 or 403 errors.
- [JERSEY-2863] - Declarative linking should use uriInfo to fill Links
- [JERSEY-2867] - Apache HTTP client connection manager sharing
Pull Requests
2.17
Release date: 11-Mar-2015
Highlights
CDI integration in EAR packaged WARs
From version 2.17 onwards, it's possible to use CDI with multiple JAX-RS web-applications packaged in EAR. All supported HK2/CDI injections now work as expected for JAX-RS application deployed in the mentioned fashion. One need to make sure that modules jersey-cdi1x and jersey-cdi1x-servlet are present in Servlet container (that supports EARs).
Bug
- [JERSEY-1883] - @PostConstruct method called twice on @singleton
- [JERSEY-2281] - Fix mispelled Function name WadlResource#geExternalGrammar
- [JERSEY-2531] - Allow JAX-RS application subclass initialisation by Jersey's component provider
- [JERSEY-2603] - MvcFeature implementations TEMPLATES_BASE_PATH vs TEMPLATE_BASE_PATH
- [JERSEY-2625] - Declarative linking with mixed JAXB/JPA entities using EclipseLink leads to ValidationException
- [JERSEY-2663] - Why two temp file is created during file upload with jersey 2?
- [JERSEY-2677] - Leak for RequestScoped injectables if async server model is used
- [JERSEY-2680] - Exception in jersey path mapper bubbles up until top
- [JERSEY-2698] - ApacheConnector doesn't respect per-request timeouts
- [JERSEY-2724] - The proxy client throws UnsupportedOperationException when calling toString
- [JERSEY-2776] - Regression -Multipart/form-data POST having a quoted boundary parameter in the Content-Type header fails.
- [JERSEY-2789] - Astral Unicode characters included in uri parts are not properly encoded
- [JERSEY-2790] - jaxrs-ri transitively pulls in sources jars, wastes space and increases startup time
- [JERSEY-2792] - NPE in JerseyTest.tearDown
- [JERSEY-2796] - Calling getClasses() on ResourceConfig breaks example in some cases
- [JERSEY-2800] - Memory Leak when using @BeanParam within HK2
- [JERSEY-2801] - Bug in org.glassfish.jersey.internal.util.ReflectionHelper
- [JERSEY-2813] - The RxObservableInvoker swallows errors such as 404 NotFound
Improvement
- [JERSEY-2490] - Declarative linking recurses into too many things
- [JERSEY-2771] - Hard to customize freemarker configuration
- [JERSEY-2814] - Imporve JDK container to take custom SSLContext
Task
- [JERSEY-2791] - Add support for micro-benchmarks in Jersey (JMH based)
Pull Requests
- [Pull 146] - A fix for issue JERSEY-2625
- [Pull 145] - Restore JarFileScanner support for parents with a trailing slash
- [Pull 143] - JERSEY-2776: Unquoting boundary string for multipart Content-Type headers
- [Pull 141] - easy configuration for freemarker
- [Pull 140] - JerseyTest.tearDown to be more careful
- [Pull 131] - JERSEY-2724 Added support for toString in proxy client
- [Pull 121] - ApacheConnector: Set timeouts on per-request basis
- [Pull 99] - Proposal to fix: #JERSEY-2490
2.16
Release date: 11-Feb-2015
Highlights
JAX-B providers separated from the core
From version 2.16 onwards, all JAX-B providers are being bundled in a separate module.
Performance gain when using Sub-Resource Locators
We improved the performance for using sub-resource locators in an Jersey application. The performance gains
are available for cases when the sub-resource locator method returns either a resource class (return value is
e.g. Class<?>
or Class<MySubResource>
) or a (non-proxied)
resource instance (when return value is an instance of MySubResource
class).
More unified connector configuration options
Jetty connector and Apache connector have been previously using their own custom properties to set SSL context on a connector. These properties have been deprecated and the code has been updated to read the SSL context information from the JAX-RS client configuration. This means that all Jersey connectors now properly accept SSL configuration as configured via standard JAX-RS ClientBuilder methods.
Previously, all Jersey connectors have been using their own default chunk size when HTTP chunked coding was used. Since Jersey 2.16, there is a new default chunk size value used by all connectors, if a custom chunk size is not set. The new default value is stored under ClientProperties.DEFAULT_CHUNK_SIZE client property.
Bug
- [JERSEY-2635] - Jersey does not produce first media type when accepts header is "*/*"
- [JERSEY-2637] - sensitive params can be exposed in logs even for POST requests
- [JERSEY-2668] - Memory leak using @BeanParams, @context and @Valid arguments in resource methods
- [JERSEY-2675] - SSLConnections are not reused
- [JERSEY-2707] - char cannot be used as the type of a @*Param
- [JERSEY-2742] - LoggingFilter's LoggingStream does not delegate flush()
- [JERSEY-2748] - When running grizzly http server on z/OS, incoming JAX-RS based REST request URIs are incorrectly converted from UTF-8 to EBCDIC default charset and thus lead to HTTP 404
- [JERSEY-2753] - UriBuilder should leave relative path relative
- [JERSEY-2760] - TimeZones in DateProvider (via HttpDateFormat) can get corrupted
- [JERSEY-2781] - Locale-dependent test fails in org.glassfish.jersey.message.internal.QualityTest.testEnhanceWithQualityParameter
- [JERSEY-2783] - Priority comparator fails when dealing with edge case values Integer.MIN_VALUE and Integer.MAX_VALUE
Improvement
- [JERSEY-1708] - Implement sub-resource runtime model caching.
- [JERSEY-2695] - Make EncodingFilter.enableFor type safe
- [JERSEY-2718] - Cleanup code, fixing performance issues
Task
- [JERSEY-2132] - Entity Filtering - Add support for JSON via Jackson
Pull Requests
- [Pull 88] - getCookieStore method in ApacheConnectorProvider
- [Pull 102] - Produce first declared content-type on Accept:*/*
- [Pull 111] - Cache SSLSocketFactory so that connections can be reused. (JERSEY-2675)
- [Pull 115] - [JERSEY-2681] Added Spring Component method autowiring support.
- [Pull 125] - JERSEY-2718 cleanup code
- [Pull 132] - Fix various issues with JarFileScanner
- [Pull 134] - Add support for nested generics to ConfigurableMoxyJsonProvider
2.15
Release date: 14-Jan-2015
Highlights
Container agnostic CDI support
Before 2.15, CDI integration was supported primarily in Java EE containers with built-in CDI support. From version 2.15 onwards, it is possible to leverage CDI integration also outside of Java EE environment. A new example, helloworld-weld, has been introduced to demonstrate the new feature using Grizzly HTTP server. Another example application, cdi-webapp, has been updated so that it enables Apache Tomcat Server deployment.
Breaking Changes
CDI support improvement caused breaking changes for those users directly referring to the following CDI supporting Jersey module in maven:
<dependency> <groupId>org.glassfish.jersey.containers.glassfish</groupId> <artifactId>jersey-gf-cdi</artifactId> <version>${pre-2.15-version}</version> </dependency>
The above dependency needs to be replaced with:
<dependency> <groupId>org.glassfish.jersey.ext.cdi</groupId> <artifactId>jersey-cdi1x</artifactId> <version>2.15</version> </dependency>
The following needs to be included in addition if you want to leverage CDI JTA support:
<dependency> <groupId>org.glassfish.jersey.ext.cdi</groupId> <artifactId>jersey-cdi1x-transaction</artifactId> <version>2.15</version> </dependency>
Bug
- [JERSEY-2558] - ChunkedOutput.close() broken since Jersey 2.8
- [JERSEY-2622] - NPE at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:300)
- [JERSEY-2651] - JAX-RS filters are not registered if they are Spring managed components
- [JERSEY-2721] - Proxy client fails to send an entity if it has any annotation
- [JERSEY-2739] - "NameBinding" results in a deployment failure
- [JERSEY-2750] - @RolesAllowed does not work in JettyHttpContainer
Improvement
- [JERSEY-2650] - Unnecessary copy of el-api is deployed to WEB-INF due to compilation dependency in jersey-declarative-linking extension
Task
- [JERSEY-2017] - CDI integration should be provided as AS agnostic, CDI 1.0 and CDI 1.1 modules in Jersey
Pull Requests
2.14
Release date: 11-Dec-2014
Bug
- [JERSEY-2604] - Mvc AbstractTemplateProcessor leaks file handles
- [JERSEY-2633] - Jersey server force all request handling threads to pass through a single lock
- [JERSEY-2654] - ServletContainer#doFilter attempts template substitution on request URL
- [JERSEY-2669] - Typo in docs for @QueryParam
- [JERSEY-2670] - Broken links to JAX-RS APIs
- [JERSEY-2676] - HK2 ServiceLocator Cache growing too big
- [JERSEY-2686] - Fix parent relative path for BOM module
- [JERSEY-2687] - Jersey metainf-services extension bundles core classes from o.g.j.message.internal package
- [JERSEY-2696] - client proxy incorrectly resets "Accept" header defined by @produces annotation
- [JERSEY-2702] - Document typos (templateBasepath -> templateBasePath)
- [JERSEY-2703] - Documentation references non-existent method
- [JERSEY-2704] - JerseyServlet WebComponent unable to use external ServiceLocator
Improvement
- [JERSEY-2537] - JerseyUriBuilder.replaceMatrix(null) should remove semicolon
- [JERSEY-2612] - SingleValueExtractor makes it impossible to support java.util.Optional (or Guava Optional)
- [JERSEY-2671] - Upgrade to hk2 2.3.0 final
Pull Requests
- [Pull 97] - JERSEY-2537 - JerseyUriBuilder.replaceMatrix(null) should remove semicolon
- [Pull 98] - JERSEY-2612 - SingleValueExtractor makes it impossible to support java.util.Optional (or Guava Optional)
- [Pull 106] - JERSEY-2112 - Updated documentation to make it explicit that resources must be Spring components in order for Spring proxying to work
- [Pull 107] - JERSEY-2669 - Typo in docs for @QueryParam
- [Pull 110] - JERSEY-2670 - Broken links to JAX-RS APIs
- [Pull 113] - JERSEY-2671 - Upgrade to hk2 2.3.0 final
- [Pull 116] - JERSEY-2686 - Fix parent relative path for BOM module
- [Pull 117] - fix wrong argument order for registering Consumer
- [Pull 120] - JERSEY-2696 - client proxy incorrectly resets "Accept" header defined by @produces annotation
- [Pull 122] - [doc] Fixed tiny typo
- [Pull 128] - JERSEY-2704 - JerseyServlet WebComponent unable to use external ServiceLocator
2.10.1
Release date: 01-Jul-2014
Bug
- [JERSEY-2567] - Schedule timeout handlers should not be interrupted from resume/cancel methods if they're already invoked
- [GLASSFISH-21110] - cdi tck failures caused by Jersey
2.10
Release date: 24-Jun-2014
Pull Requests
- [Pull 45] - Fixed setRequestMethodViaJreBugWorkaround() to work with HTTPS as well as HTTP
- [Pull 86] - Update README.md
Bug
- [JERSEY-2162] - Cannot cancel a pending asynchronous request using Jersey Client
- [JERSEY-2422] - New gf-cdi broke deltaspike
- [JERSEY-2494] - AsyncResponse timeouts creates unncessary GC pressure
- [JERSEY-2524] - Problem when generating JSON with Padding Support with GZIP compression enabled
- [JERSEY-2525] - Incoming URL components are parsed for bracket paths
- [JERSEY-2526] - CDI producer for JAX-RS String parameters clashes with application producers
- [JERSEY-2527] - Jersey CDI extension registers unnecessary/redundant CDI beans
- [JERSEY-2541] - Generic types are missing for EJB Resources
- [JERSEY-2543] - ApplicationHandler.apply() always overrides the SecurityContext of the ContainerRequest with the DEFAULT_SECURITY_CONTEXT
- [JERSEY-2569] - ExtendedMonitoringStatisticsListener is never called
- [GLASSFISH-21033] - adding MultiPartFeature to JAX-RS Application throws exception
Improvement
- [JERSEY-2530] - Add support for client proxy to Grizzly async connector.
- [JERSEY-2540] - Add support for configuring various specific Grizzly Async HTTP Client Connector features
- [JERSEY-2568] - Lower the footprint of Jersey Monitoring for apps that are not used
2.9.1
Release date: 30-May-2014
Bug
- [JERSEY-2526] - CDI producer for JAX-RS String parameters clashes with application producers
- [JERSEY-2527] - Jersey CDI extension registers unnecessary/redundant CDI beans
2.9
Release date: 23-May-2014
Highlights
Declarative Linking
Gerard updated the Declarative Linking extension module which has been ported to Jersey 2 in version 2.6. You can read more about what Declarative Linking does and what it's capable of in the following blog posts:
Jackson 2
Our media module that supports working with JSON via Jackson library has been updated to use Jackson 2.x (2.3.2). All samples and tests have been rewritten to use Jackson 2 as well. In order to use Jackson 2 in your application you need to add jersey-media-json-jackson (+ it's Jackson dependencies) to your class-path and register JacksonFeature in your application.
META-INF/services
We dropped automatic registration of message body providers (MessageBodyWriter, MessageBodyReader) and exception mappers via META-INF/services mechanism. This functionality can be restored by adding jersey-metainf-services module to the class-path of your application.
Note: This change may affect 3rd party libraries (e.g. Jackson 2.x) in a way their provider would not be registered in an JAX-RS app. You need to either register them manually or use mentioned jersey-metainf-services module.
Jersey Test Framework
Jersey Test Framework now supports TestNG to run the tests (in addition to the JUnit, which is supported by default). You can now run the tests in parallel using either JUnit or TestNG. See chapters dedicated to TestNG and parallel testing for more information: Running TestNG Tests and Parallel Testing with Jersey Test Framework.
Bug
- [JERSEY-2320] - EJB singleton bean registered as an exception mapper causes deployment failure
- [JERSEY-2420] - jersey-guava-2.6-sources.jar is empty
- [JERSEY-2484] - Memory leak in GrizzlyHttpServerFactory when HttpServer.start throw exception
- [JERSEY-2496] - Permgen memory leak when deploy/undeploy multiple times
- [JERSEY-2499] - Bean validation not working for constraints placed on super classes
- [JERSEY-2501] - Jersey 2.8 breaks JerseyTest unit tests under TestNG
- [JERSEY-2502] - JdkHttpServerFactory does not return HttpsServer when https:// URI is used.
- [JERSEY-2514] - Typo in documentation
- [JERSEY-2520] - Jersey 2.x application missing / MIME-Type in WADL
Improvement
- [JERSEY-2512] - Declarative linking reading
- [JERSEY-2517] - Create mechanism to automatically register features/providers even when autodiscoverable and metainf/services mechanisms are disabled
- [JERSEY-2518] - Disable MBW, MBR, ExceptionMapper automatic registration via META-INF/services
Task
- [JERSEY-2519] - Update Jackson JSON module to use Jackson 2.x (Jackson 1.x -> Jackson 2.x)