The 1.1 release involved a lot of hard work in the guts of Seam, refactoring and fixing bugs, and working with
tricky code that handles concerns like clustering and concurrency. Sure, there are many new features, but a lot of the real work is less user-visible. Now that this hard stuff is out of the way, it lets us add some interesting new stuff pretty quickly. Here's a quick roadmap for the next few months:
Spring integration package
We're seeing regular requests from people who have existing DAOs and business logic written using the Spring Framework and want a migration path to Seam that lets them re-use this existing code unchanged. The planned Spring integration package will provide:
- injection of Spring beans into Seam components, using @In
- access to the Spring beans in the EL
- injection of Seam components into Spring beans using Spring XML
- integration of the Spring DAO framework with Seam-managed persistence contexts
So, you'll be able to easily call existing code written in Spring from your Seam component, JSF views, or jBPM process definitions, and have that code be able to take advantage of Seam's conversation-scope persistence contexts. For the first time, you can have Spring code that isn't vulnerable to LazyInitializationException!
We'll probably even go as far as:
- The ability to treat a Spring bean as a Seam STATELESS JAVA_BEAN component, with a full stack of Seam interceptors
In which case a class can simultaneously be a Seam component and a Spring bean, the same way a class can simultaneously be a JSF managed beans, an EJB3 session bean, and a Seam component today.
The most-requested feature in the Seam forums is security. Unfortunately, the security-related specifications did not go through the same process of self-examination and improvement in Java EE 5 that some other specifications (EJB) did, and so there is now a yawning hole, exactly where the platform should strongest. (Today the most inadequate specifications in Java are the portlet spec, the atrocious servlet spec, and any JSR relating to security.) Seam 1.1.5 will introduce Seam/Security, an extension to Seam that provides:
- a usable authentication layer
- an ACL based permissioning model
- an optional (customizable) user/role model
- a totally cool (at least we think so) authorization mechanism based upon EL and Drools
The permissioning model lets you do
row level security by writing rules that refer to the actual object instance that we are checking permissions for.
A subsequent release will also provide a console for administration of permissions, users/roles and rules. OK, I'm sure that sounds pretty vague now, but stay tuned.
Seam and iText
Generating PDF is amazingly unsexy, but also incredibly useful. Seam 1.1.5 will provide a library of JSF controls for iText , letting you quickly create JSF templates that are capable of rendering PDF, Text and RTF. This will be as easy to use as:
<f:view [=>xmlns:f=]"=>http://java.sun.com/jsf/core" [=>xmlns:it=]"=>http://jboss.com/products/seam/itext"> <[=>it:paragraph]>Hello World!</=>it:paragraph> </f:view>
Integration of seam-gen with Hibernate Tools
Rails has made commandline tools popular for web development, and was the inspiration behind seam-gen. But I'm one of those recalcitrant IDE kinda guys, and I expect tooling to be properly integrated with Eclipse. We'll be updating the GUI for Hibernate Tools to take advantage of the new templates in Seam 1.1, which will let you do everything you can do today using seam-gen, totally within Eclipse.
We've been promising for months that Seam is the killer component model for SOA. Unfortunately, we got so bogged down in Seam 1.1 that we're well behind on our original plan to deliver this in 2006.
Seam 1.2 will integrate Seam with the Java EE 5 Web Services layer and provide support for service conversations in its context model (I've not yet decided whether this calls for a new SERVICE_CONVERSATION context, or whether it is just a different interpretation of the existing CONVERSATION context for a WS invocation. Eventually, Seam/WS will also support service orchestration and conversation recovery via jBPM.
Actually, Seam/WS will just be one piece of a larger initiative to bring Seam to ESB and SOA environments, but at present this idea is mostly speculative.
Look for a beta release of Seam 1.2 in Q1.