GlassFish Server Open Source Edition 3.1 - Jersey
Jersey related features/tasks mostly associated with GlassFish. Scope
Jersey currently ships a jersey bundle to GF (in addition to other jars) containing a number of jersey modules. This will be changed so that each jersey module is shipped directly and aligns with OSGi support of Jersey in and outside of GlassFish. Deployment of Jersey applications to GlassFish as an OSGI-bundle will enable multiple versions of Jersey to be installed in isolation. Currently many developers are having issues with running later versions of Jersey to that which is installed in GlassFish. The class loader delegation feature of GlassFish is not sufficient. This feature us not really Jersey specific but Jersey will provide input to requirements and will test deployments. Jersey currently uses a very old version of the GlassFish embedded API. This needs to be updated to use the latest API for embedded tests and for use with the jersey test framework. Additionally we need to support maven target embedded-glassfish:run in webapp samples (and be sure that correct jersey version will be used) and test samples which use CDI, EJB and Managed beans on embedded glassfish. Jersey needs to improve it's integration with CDI such that the optional aspects of the JAX-RS spec in this regard are investigated and implemented. Specifically this means providing bindings such @Inject works for JAX-RS/Jersey related injection points. The JAXB JSON support in Jersey can work for simple cases but developers are struggling to understand the how the JSON relates to the classes and there are many edge cases that are hard to support because of the mismatch between the JSON data model and the XML infoset model that JAXB uses. Jackson is an excellent library that provides a clearer mapping from POJOs to JSON. Jersey is already depending on it for low-level support. Jersey caches runtime information generated from Java reflection for performance reasons. This does not work so well when Jersey developers utilize JRebel for rapid development. A Jersey/JRebel plugin will solve this. Such a plugin was prototyped over a year ago. This is technically feasible and requires that JRebel cause Jersey to reload (a feature which Jersey already supports). Hypermedia support for RESTful application is an important area that JAX-RS 1.x left for a future JAX-RS specification. Jersey can provide useful APIs on the client and server that can be input to a future JAX-RS specification. These APIs will be public thus it is important to get these APIs right before being shipped with a stable release of Jersey, hence why these features are closer to the end of the GlassFish 3.1 release schedule. These APIs will be shipped in the experimental area of Jersey and distributed with SNAPSHOTs before becoming part of the stable API. Design Document
|
Item # | Date/Milestone | Feature-ID | Description | QA/Docs Handover? | Status / Comments |
---|---|---|---|---|---|
1. | MS 2 6/21 | 1 | Modularization of Jersey distribution | No | |
2. | MS 2 6/21 | 2 | Deployment of Jersey OSGi-war bundles | No | |
3. | MS 2 6/21 | 3 | Use the GlassFish 3 embedded API | No | |
4. | MS 4 8/16 | 4 | Improved CDI and JAX-RS integration | No | |
5. | MS 4 8/16 | 5 | Improved JSON support using Jackson | No | |
6. | MS 4 8/16 | 6 | Jersey with JRebel | No | |
7. | MS 5 9/13 | 7 | Improved hypermedia support on client | No | |
8. | MS 5 9/13 | 8 | Improved hypermedia support on server | No |
Task | Target Milestone | Start | End Date | Owner(s) | Feature ID | Status / Comments |
---|---|---|---|---|---|---|
Modularization of Jersey distribution | MS 2 6/21 | 6/21 | See feature | 1 | Dependency on GlassFish OSGi | |
Deployment of Jersey OSGi-war bundles | MS 2 6/21 | 6/21 | See feature | 2 | Dependency on GlassFish OSGi | |
Use the GlassFish 3 embedded API | MS 2 6/21 | 6/21 | See feature | 2 | Dependency on GlassFish Embedded API | |
Improved CDI and JAX-RS integration investigation | MS 2 6/21 | 6/21 | See feature | 4 | Dependency on Weld | |
Improved CDI and JAX-RS integration | MS 4 8/16 | 8/16 | See feature | 4 | Dependency on Weld | |
Improved JSON support using Jackson | MS 4 8/16 | 8/16 | See feature | 5 | Dependency on Jackson | |
Jersey with JRebel | MS 4 8/16 | 8/16 | See feature | 5 | Dependency on JRebel | |
Improved hypermedia support on client | MS 5 9/13 | 9/13 | See feature | 6 | No current external dependency | |
Improved hypermedia support on server | MS 5 9/13 | 9/13 | See feature | 7 | Dependency on javax.el |