Summary
In J2EE 5, a significant amount of glue code is required to use JSF and EJB 3.0 together, and that glue code often has to deal with difficult application issues. The JBoss Seam projects aims to simplify that interaction by bringing EJBs closer to the Web tier.
Advertisement
JSF and EJB 3.0 offer complementary sets of capabilities to a Web application, but using the two together is not entirely seamless. The glue code a developer needs to write to connect JSF with EJB 3.0 entity beans often has to deal with hard-to-tackle application issues, especially when complex application logic and business process integration is involved. JBoss' Seam project aims to make that interaction easier:
[The Seam framework] is designed to take care of the plumbing between existing frameworks including EJB 3.0, JSF, and BPM. [...] Developers apply many design patterns in a sophisticated web application, creating layers of code, which is often a requirement of the frameworks, not of the application design. Seam collapses these artificial layers and brings EJBs closer to the web layer. It allows you to access EJBs as JSF backing beans. Hence, a developer is free to choose what layers are needed according to the application's architecture requirements, instead of being forced into decisions by the framework.
A recent article provides a tutorial introduction to Seam. What is your experience using EJB 3 and JSF together?