Tuesday Jun 24, 2014

CDI Events

"It is better to be looked over than overlooked." (Mae West)

CDI (Contexts and Dependency Injection for the Java EE Platform - JSR 346) is an important specification of the Java EE Platform but CDI is 'not just about' dependencies injection and contextual lifecycle management!  For example, events is one CDI aspect that is sometime overlooked. CDI events provides a simple mechanism that allows beans to produce and consume events in a completely decoupled fashion with zero compile-time dependency between the interacting beans. 

Antoine Sabot-Durand (CDI co-specification lead) has recently posted a nice article (You think you know everything about CDI events… Think again!) on this topic.  The article goes over the events principles, some more advanced capabilities, the limitation, etc.  And before that, if you want a sweet introduction to CDI events, you might want to check appropriate sections of the Java EE 7 Tutorial : Using Events in CDI Applications and the corresponding example

So if you haven't looked yet at CDI events seriously, it is probably a good time to do so!  

PS : CDI had a maintenance release recently (CDI 1.2). For GlassFish 4.0.1, we plan to update the Weld implementation (CDI Reference Implementation) to bring CDI 1.2 support in GlassFish.
PPS : If you haven't done so, you still have a few days left to fill the survey on CDI 2.0.

Monday Mar 05, 2012

GlassFish 3.1.2 Updated Components (Final)

Now that GlassFish 3.1.2 has been released, it's time to check on the exact list of updated components (one of the important themes in pretty much every release).

• JSF/Mojarra 2.1.6
• Grizzly 1.9.46
• Metro 2.2
• Jersey 1.11
• Shoal 1.6.17
• EclipseLink 2.3.2
• Message Queue 4.5U2
• OSGi Core 4.3.0
• Update Center 2.3.5
• Hibernate Validator 4.2.0-FCS
• JavaDB
• Weld 1.1.4.Final


About half of the bugs squashed in this GlassFish 3.1.2 release were through the integration of those recent components.

Monday Jan 23, 2012

Java EE 7 progress - CDI 1.1 EDR and Weld 2.0 Alpha

Having the Early Draft Review of JSR 346 (CDI 1.1) available for review and studying is good but having an early implementation to go along is even better.

That's what JBoss' Jozef Hartinger has recently announced on his blog - an alpha release of the future Weld 2.0 reference implementation.

Weld Logo

According to Jozef, the main purpose of this release is in fact to provide a feature-complete implementation of this draft CDI specification and features such as CDI.current(), application life-cycle qualifiers, beans.xml manipulation using ProcessModule, and many others.

As a reminder CDI 1.1 is scheduled to be integrated in the upcoming Java EE 7 platform later this year.

Sunday Dec 18, 2011

Updated Components in GlassFish 3.1.2

One of the important goals of the upcoming GlassFish 3.1.2 release is to update the sub-components to their most recent versions.

This in itself squashes a number of bugs filed against GlassFish and brings individual new features to a fully integrated and supported product.

Here is the target list of components in this next GlassFish release :

Original Tesla Engine Photo from http://www.flickr.com/photos/tbridge/5349641870/

• JSF/Mojarra 2.1.6
• Grizzly 1.9.42
• Metro 2.2
• Jersey 1.11
• Shoal 1.6.15
• EclipseLink 2.3.1
• Hibernate Validator 4.2.0-FCS
• Weld 1.1.4

Should there be any changes, this will be documented on the GlassFish Wiki (which now has all the redirects in place following the recent move).

Tuesday Jan 18, 2011

Weld 1.1 is here! Shipping with GlassFish 3.1

Weld Logo

Pete Muir has announced the release of Weld 1.1, the reference implementation of CDI 1.0. This is the release GlassFish 3.1 will ship with as previously discussed, and the last Pete worked on as the lead. Congrats to him on his new role and thanks for all the fish!

There's been quite of CDI and Weld coverage here lately, so here's a quick recap :
Weld Extensions is now Seam Solder and soon GlassFish-friendly
Java champions on the value and portability of CDI
Weld 1.1 in GlassFish 3.1

With the upcoming release of GlassFish 3.1, the vast majority of Weld or CDI-related issues should be gone. Specifically these memory leak related issues which impacted CDI early adopters in 3.0: 14419, 13928 and 12368 are now all fixed (check this complete list of CDI-related issues), including the portability issue with CDI extensions (Seam 3 on GlassFish) which was fixed in build 37. Siva has already integrated Weld 1.1 into GlassFish, so look for it in the 3.1 RC1 build!

Friday Jan 14, 2011

Weld Extensions is now Seam Solder and soon GlassFish-friendly

Seam Solder logo

Seam Solder is the new name for Weld Extensions and is a set of portable extensions for CDI and Java EE 6. Following the release of JBoss 6, several people asked about the status of Weld and Seam.

Weld is the CDI reference implementation and Seam is a JBoss-sponsored community effort to build modular extensions for Java EE 6. Seam targets standard Java EE runtimes and other environments where CDI is integrated. There's recently been a focus on compatibility, specifically to get Seam 3 running smoothly on GlassFish 3.1. You can read more on Seam 3 in this post by Dan Allen.

On a related note the upcoming GlassFish 3.1 will integrate Weld 1.1 Final as previously mentioned. This should remove the vast majority of CDI problems found in 3.0.1.

Thursday Jan 13, 2011

Java champions on the value and portability of CDI

Adam Bien Antonio Goncalves

In his latest Java EE article (published in the Jan/Feb issue of the Oracle Magazine) Java Champion Adam Bien describes CDI (Context and Dependency Injection) as the standard glue, arguing that it "(brings together) the different parts of the Java EE 6 specification" while introducing "many powerful features such as events, interceptors, decorators, standardized extension points, and the service provider interface".

Adam's article goes on to illustrate the integration with EJB, BeanValidation, and JSF while implementing the Entity Control Boundary (ECB) pattern with clearly identified boundary, control, and entity packages.

Meanwhile fellow Java Champion Antonio Goncalves takes Weld (the CDI reference implementation) for a ride in various server configurations. This ranges from a standard Java EE 6 server (GlassFish) with CDI fully integrated and ready to use to other non-specified environments but which Weld supports : Java SE and Tomcat. This is the first in a series of blogs, so make sure you keep an eye on Antonio's blog.

Wednesday Nov 10, 2010

Weld 1.1 in GlassFish 3.1

Contexts and Dependency Injection for the Java EE platform (JSR 299, tag:CDI) is one of the key specifications in JavaEE 6 and as more people are adopting it, its performance becomes more and more important.

GlassFish 3 has implemented CDI from the beginning through JBoss's Weld, the Reference Implementation for CDI, but some users have voiced concerns on the performance of the early versions of Weld (see Harald's comment or bugid 14419). The Weld team has been debating them (e.g. see thread@weld-dev) and Pete indicates that Weld 1.1 addresses these issues.

If you are a GlassFish user, you will soon be able to try out Weld 1.1.  We could not integrate the earlier beta1 due to some API incompatibilities but we are incorporating beta2 right now and we expect it to appear in GlassFish 3.1 Build 29 (next week), or at the latest in Build 30 (MS7, targeted for 11/23, see Build Map).  When it shows, please validate it against your applications and let us know if you see issues.