{{ !articles[0].partner.isSponsoringArticle ? "Platinum" : "Portal" }} Partner
java,jsf,seam,orchestra,conversation scope

Announcing Apache Orchestra, JSF conversation scope without Seam

Apache Orchestra was released Oct. 2007 without much fanfare. The announcement simply stated: "Apache MyFaces Orchestra is a library which introduce a new scope called 'conversation scope' to your web based application which will help you alot (sic) building applications using ORM by avoiding exceptions like LazyInitializationException."

Orchestra builds on top of Spring's support for scopes to build the new conversation scope. It seems you can create an extended persistence context to avoid LazyInitializationException and such. According to the site, Orchestra works with TopLink and OpenJPA as well. There is a small code example here.

There are some who find JBoss Seam a bit much to swallow and use Apache Orchestra to fill in some of the gaps. For others Orchestra builds on top of their investment in JSF and Spring without including yet another framework.

Last March we were deciding whether or not to use JSF and Seam for a project. The head architect decided on JPA, JSF and Spring, but decided to only use Seam later if we really needed it as we already had a lot to digest.

Now we have a few use cases where we could really use a conversation scope. Shortly, we have to decide on whether we should use Orchestra or Seam. We already use JSF, Spring, and JPA. Any suggestions?

What has been your experience with Apache Orchestra? When would Apache Orchestra not fit and the project need the full power of Seam? When could you get away with just Apache Orchestra? Does Seam make sense for a Spring shop?

Related post:

Seam 2.0.1 released, Is Seam or Spring the best way to write JSF/JPA based applications?

About the author

Rick Hightower is CTO of Mammatus and is an expert on Java and Cloud Computing. Rick is invovled in Java CDI advocacy and Java EE. CDI Implementations - Resin Candi - Seam Weld - Apache OpenWebBeans

{{ tag }}, {{tag}},

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}
{{ parent.authors[0].realName || parent.author}}

{{ parent.authors[0].tagline || parent.tagline }}

{{ parent.views }} ViewsClicks