Watching the Sun set....
Thursday Jan 21, 2010

I'm very grateful for the past nine years Sun. Looking forward to see what the future holds...

I'm very grateful for the past nine years Sun. Looking forward to see what the future holds...
There's a lot of buzz today around the release of GlassFish V3.
Instead of duplicating content, I would recommend reading this blog entry about the release posted to The Aquarium.
I'd like to point out that the Mojarra project team has also pushed the Mojarra 2.0.2 patch release out today as well. This patch release is included with V3 already, so no need to upgrade. If, by chance, you're using GlassFish V2 with Mojarra 2.0, follow the upgrade instructions outlined in the release notes.
Mojarra 2.0.0 is now available!
There are several ways to obtain the release.
Please review the release notes as there are important details there pertaining to differences between the implementation and the specification as well as a basic migration guide from 1.2 to 2.0 (note that this is a live document, so we'll be making additions - check back regularly).
The JSF 2.0 tutorial from our Sun documentation team should be available in the coming weeks. As soon as it is, we'll send out a notification. Until then, here are some nice resources for JSF 2.0:
I'd like to personally thank all of our external contributors who have been committing code to the repository directly or submitting patches to help improve our quality (these are in no particular order - my apologies if I've missed anyone):
I'd also like to thank our top three issue reporters for taking the time to log issues (again, in no particular order)
Also, thanks to Ed Burns, Roger Kitain, Jim Driscoll, and Doug Donahue for putting up with me for the past two years while we worked on this project :)
Finally, if you'd like to discuss JSF 2.0 with other users, I'd recommend the following:
The GlassFish Webtier forums are monitored by the Mojarra developers. The IRC channel, also, is frequented by the Mojarra developers, as well as folks from Exadel, MyFaces, and consumers of JSF as a technology. It's a great way to interact with the community.
I'm excited that we've reached this stage and am looking forward to hearing/reading about people's experiences with JSF 2.0!
Andy Schwartz, one of the JSF EG members, has written an excellent blog [1] on what's new in JSF 2.0.
Definitely worth a read!
[1] http://andyschwartz.wordpress.com/2009/07/31/whats-new-in-jsf-2/

Just a quick note to let folks know that 1.2_13 has been released. Please see the announcement for details.
A common issue in JSF 1.1/1.2 was the inability to control the order in which faces-config.xml files were parsed when said files were included in a JAR file. Why does ordering matter? Consider the decoration of entities such as ViewHandler or Application. If your application contains more than two ViewHandlers, you may wish to have the ViewHandler delegation chain configured in a certain order.
The same holds true for PhaseListeners. A developer may wish to have PhaseListenerB execute before PhaseListenerA.
A stop-gap measure was implemented by Mojarra (MyFaces does the same I believe) where the ordering of META-INF/faces-config.xml documents was determined by the natural sort order of the JAR name that contained the file. While this worked, it wasn't a perfect solution as you were then forced to rename the JAR files to achieve the desired result.
JSF 2.0 solves this by requiring implementations to support partial ordering of the configuration resources via the ordering element.
The ordering element offers a way for a single document to state it wishes to be ordered before or after a specific document, or a group
of documents. Documents can be identified by the top-level name element. It's imporant to note that there are two documents in configuration processing that are always processed in a specific order and as such the ordering element has no impact. The implementation default configuration resource is always processed first and the WEB-INF/faces-config.xml (if present) is always processed last.
Given the above, let's start with an example straigh from the specification:
A.faces-config.xml:
<faces-config>B.faces-config.xml:
<name>A</name>
<ordering>
<after>
<name>B</name>
</after>
</ordering>
<application>
<view-handler>com.a.ViewHandlerImpl</view-handler>
</application>
<lifecycle>
<phase-listener>com.a.PhaseListenerImpl</phase-listener>
</lifecycle>
</faces-config>
<faces-config>C.faces-config.xml:
<name>B</name>
<application>
<view-handler>com.b.ViewHandlerImpl</view-handler>
</application>
<lifecycle>
<phase-listener>com.b.PhaseListenerImpl</phase-listener>
</lifecycle>
</faces-config>
<faces-config>D.faces-config.xml:
<name>C</name>
<ordering>
<before>
<others />
</before>
</ordering>
<application>
<view-handler>com.c.ViewHandlerImpl</view-handler>
</application>
<lifecycle>
<phase-listener>com.c.PhaseListenerImpl</phase-listener>
</lifecycle>
</faces-config>
<faces-config>
<name>D</name>
<application>
<view-handler>com.my.ViewHandlerImpl</view-handler>
</application>
<lifecycle>
<phase-listener>com.my.PhaseListenerImpl</phase-listener>
</lifecycle>
</faces-config>
<faces-config>In this case, the parsing order would be:
<absolute-ordering>
<name>C</name>
<name>A</name>
</absolute-ordering>
.
.
.
</faces-config>
<faces-config>In this example, assuming we started with documents [A, B, C, D], then the resulting parse order may look like:
<absolute-ordering>
<name>C</name>
<others />
<name>A</name>
</absolute-ordering>
.
.
.
</faces-config>