Search code examples
javahibernatejbossseamicefaces

Upgrading JSF/Seam/JBoss application to newer versions


I'm in the progress of creating an upgrade path for our application and several questions arose in this progress. I think, my configuration is used often in this context, so maybe someone experienced this before.

Short app description:

  • JSF Web application
  • ICEfaces as JSF framework (actual version 1.8.3 latest is 3.1)
  • Seam as connection between EJB/View (actual is 2.1.1, latest is 2.2.2 or 3)
  • Deployed in JBoss 4.2.2.GA (latest is 7.1)
  • Database connection via Hibernate/Seam EntityManager

What should be upgraded first? Which update is maybe not even neccessary?

Here is what I figured out:

  • ICEfaces seems to be mostly harmless, just replacing jars and upgrading to JSF 2, the app already uses facelets and no JSP what should make it easier. Still, it's work, but seems to be straigt forward

  • Additional libraries like Hibernate come with the application, but could be integrated via class loading into JBoss, so that should be not that much a problem.

  • As Seam3 appears to be a new implementation, i would like to stay in the 2.X context. 2.2.2 seems reasonable and migration guides exists, but it appears to be tightly coupled to JBoss AS.

Which brings me to the main problem: Upgrading JBoss

The newest JBoss Version is 7.1, we are using 4.2.2. That's quite a big step in version numbers and it appears to be the complicated part. In addition, Seam seems to have some problems with JBoss 7. A preliminary upgrade to JBoss 6 seems a reasonable step in the between progress, just to get something a bit more up to date.

Has anybody here performed such a relatively large upgrade progress and could give some hints to a rookie? Maybe some tips about known traps and things to to (beside constantly doing tests of the existing codebase)

And, generally, in the given J2EE-context, when should one upgrade used libraries (Leave aside security updates or major bugfixes)?


Solution

  • If you're going through the trouble to upgrade do at least 2.3, it's still in beta (beta2 last I heard, maybe with seam-gen support) but has all the functionality of 2.2 with jsf2 and runs on jboss 7. Upgrading from 2.1 to 2.2 doesn't really gain you much, 2.2 doesn't work with jboss7 without much work and doesn't have jsf2, though it is easier to go to 2.2/jboss5.

    If you're thinking Seam3, read this - go with Java EE/CDI instead.
    I would

    start studying up on maven

    upgrade eclipse to at least indigo with jboss tools and maven plug ins

    get Jboss 7 up and running - it's completely different from versions before 6, but getting it running is relatively easy, the hard part is figuring out where everything goes now.

    reconfigure your application to use maven

    add the Seam 2.3 libraries to your application

    either build - fix - deploy - fix

    or strip your application down til it works and add components a piece at a time.

    Marek's 2.3 blog is here

    Good luck