Half Pager: Contexts and Dependency Injection support in GlassFish 3.1

Table of Contents

1. Introduction

1.1 Project/Component Working Name
Contexts and Dependency Injection (CDI) support in GlassFish 3.1

1.2 Name(s) and e-mail address of Document Author(s)/Supplier
Sivakumar Thyagarajan / sivakumart@sun.com

1.3. Date of This Document
May 23, 2010

2. Project Summary

2.1 Project Description

Weld 1.1 integration
Weld 1.1 1 is the next major version of the reference implementation of the
Contexts and Dependency Injection(CDI) specification 2. The plan is to
integrate Weld 1.1 into GlassFish 3.1 for enhancing the current support of
dependency injection and contextual lifecycle management.

Weld 1.1 intends 3 to enhance the container integration SPI by providing the
ability for the container to override the reflection abstraction API. This
would enable the container to avoid multiple scans for annotations in archives
with CDI and non-CDI modules. Based on the availability of the API earlier in
our development cycle, we plan to investigate using this ability to override
the default annotation scanning implementation in Weld with ours.

Weld 1.1 may also implement the maintenance release of the JSR-299 spec, if it
becomes available by Weld 1.1's timeframe.

Streamlining the Integration Process
To streamline the integration of the Weld distribution into GlassFish,
we plan to do the following tasks as part of this release:

  • setup a continuous integration mechanism (Hudson) to integrate the latest
    Weld Workspace/promoted binaries into GlassFish.
  • develop a battery of development/SQE tests 4 to enhance the current CDI
    tests.
  • a pre-integration test suite(subset of 4) covering common container
    integration issues would be run by JBoss before a promotion/handoff
  • JBoss to run CDI TCK on GlassFish last promoted build before handoff.

Enhanced Usability and Documentation
In 3.1, we would also enhance the current tooling support provided by
NetBeans making it easier to build and debug CDI applications by making
it easier to find the root-cause of unsatisfied and ambiguous dependencies
during typesafe resolution in the IDE(Netbeans). We also plan to enhance
CDI documentation bundled with GlassFish. We would work with the
JAX-RS(Jersey), Web-services, EJB teams to understand their issues
with the current Weld SPI and to communicate with JBoss about these SPI
enhancements for Weld 1.1.

2.2 Risks and Assumptions

  • Dependent on JBoss for the timely delivery of release candidates and final
    release of Weld 1.1. for integration into 3.1. Current plan for Weld 1.1
    is September 2010.
  • JSR-299 MR delay should not delay Weld 1.1 release
  • Our Feature complete only at their release candidate, so late breaking
    changes may come in
  • CDI TCK failure analysis also comes in late in their release cycle, this
    adds more time to our schedule.
  • If the reflection abstraction API is available in one of the earlier
    RCs handedoff for integration, we will plan on using it as described
    in 2.1

3. Interfaces

3.1. Exported Interfaces
javax.inject JSR 330
javax.enterprise.context JSR 299
javax.annotation.ManagedBean JSR 316

3.2. Imported Interfaces
-

3.3. Other Interfaces (Optional)
The Weld container integration SPI interfaces

4. Reference Documents

1 Weld home: http://seamframework.org/Weld
2 JSR 299 Contexts and Dependency Injection for the Java EE
platform: http://jcp.org/en/jsr/detail-299
3 Weld 1.1 plans: http://relation.to/Bloggers/PlansForWeld11
4 CDI developer Tests planned
for 3.1: http://wiki.glassfish.java.net/Wiki.jsp?page=CDIDevTests