- Andrew Kos
- Bill Burlein
- Bryan Williams
- Christian Vozar
- Jeff Brown
- John Kraus
- Joseph Mak
- Josh Durbin
- Mark Daugherty
- Matt Van Bergen
- Melissa Geoffrion
- Michael Kang
- Michael Chan
- Michael Hodgdon
- Mike Motherway
- Molly McDaniel
- Nadia Maciulis
- Pat McLoughlin
- Paul Michelotti
- Puru Hemnani
- Rohit Srinath
- Ryan Lunka
- Tom Kelly
All Blogs
CITYTECH Blogroll:
An Honest Look at Seam – Part 3: Learning Seam
Tuesday, March 30, 2010
This is the third part in a series of posts about the Seam Framework
I wanted to take a brief departure from exploring the features of Seam to take a look at a common question I have heard from folks who are considering diving into Seam. It seems (no pun intended) that a lot of people take a look at Seam, download it, run seam-gen on some existing database to see what it does, and then their jaw hits the floor. “What is all of this!?” Seam-gem builds a lot of stuff. You get a completely functioning crud app with all kinds of nice extras. There is a lot of stuff there and much of it will be stuff you have never seen before, even if you have worked with JSF before.
There is a lot to Seam, but not becuase Seam itself is vastly huge and complex, but because Seam integrates so many things together, there is a lot of infrastructure that represents pieces from several open source projects. Additionally, especially in the case of JSF and Richfaces, the line between the frameworks Seam is integrating and Seam itself gets blurry.
For me, using Seam was my first serious usage of JSF. That meant it was also my first serious usage of faceletts/Richfaces and Ajax4JSF (more on that in part 4). So, when I first opened up those .xhtml files, I had no idea what I was looking at. And don’t even get me started on all the various XML files that were in WEB-INF. You have to keep in mind that this is a rather complete application and if you take a look at the XML files, none of them are very long.
To clear some of this up and get a general idea of how the various pieces of Seam fit together, we will take a look at a diagram from Dan Allen’s Seam In Action (Dan Allen. Seam In Action. Greenwich, CT: Manning Publications Co., 2009. 5. Print.). This gives you an idea of where the pieces fall.

Simple Diagram of Seam's High Level Architecture
At it’s heart, Seam is an integration project. It is stitching together EJB3 and JSF. But it does more than that as well. It also extends and improves on JSF and allows you to integrate libraries that provide rendering PDFs, sending e-mails, integrating with Messaging frameworks like JMS and more. It is a very ambitious project, and it must say I am impressed that it pulls it off very well.
There is a lot to Seam and it is going to take some time to digest, but not any longer than if you were learning any other new framework. I am going to plug Dan Allen’s Seam in Action again because it was a huge help to me in getting started with Seam and breaking down all the pieces.
With this covered, I hope that you won’t let Seam intimidate you as you dive in and see if you can leverage it on your own projects. Keep you eye out for part 4, where I will take a look at the view technologies you can use with Seam.
(Disclosure: Neither I nor CITYTECH receive any monetary benefit from mentioning Dan Allen’s book in these blog posts. I sincerely think his book is a great resource on the topic of Seam.)
Previous Posts in the series
Part 1: How Seam Builds on Spring
Part 2: The Conversation
Matt Campbell
Recent Posts
- Descriptive JMX Beans in AEM/CQ
- Invisible requirements within Business requirements
- Building a better Options Predicate
- Javascript, This, and You.
- Extensionless URLs with Adobe Experience Manager
- The Life of a Tester in Adobe CQ World!
- Limitations of the CQ Parsys Model and the Implementation of a Nested Paragraph System
- Google Analytics and AEM: No JavaScript? No Problem.
- Using Apache FOP to generate a PDF document based on a form submission data
- Configuring SAML in AEM 5.6