Bringing military-grade cybersecurity solutions to the enterprise and critical systems.
Telephone: 310.356.7869

IllegalArgumentException: no such setter method: conversationIsLongRunningParameter

Category: ExceptionOfTheDay

2:57 PM, Fri, Dec 7 2007

JBoss Seam 2.0 is out, so it's time to upgrade your apps so you don't get stuck on the old version. I did the obvious things: replace all the relevant jar files, and fix the imports. Some classes have moved to different packages, so imports need to be fixed. NetBeans' fix imports feature handles this.

I then ran it and got today's Exception of the Day:

Caused by: java.lang.IllegalArgumentException: 
  no such setter method:
  org.jboss.seam.faces.FacesManager.conversationIsLongRunningParameter
        at org.jboss.seam.util.Reflections.getSetterMethod(Reflections.java:236)
        at org.jboss.seam.Component.initInitializers(Component.java:466)

Who is looking for this no longer existent method? It's in components.xml. Remove the conversation-is-long-running-parameter="clr" entry. Also change the XML declaration in components.xml. Look at the examples to see the proper declaration. This is important, because how the file is parsed is determined by the version number in the declaration.

After that, the application started, but when I accessed a page, I hit:

java.lang.NoClassDefFoundError: org/jboss/el/lang/EvaluationContext

To fix, add jboss-el.jar to the ear/lib directory.

Next problem:

SEVERE: Error Rendering View[/index.xhtml]
java.lang.IllegalStateException: entityManager is null
        at org.jboss.seam.framework.EntityQuery.validate(EntityQuery.java:39)

SEVERE, indeed.

Edit components.xml, and replace:

<core:managed-persistence-context name="entityManager"
   auto-create="true"
   persistence-unit-jndi-name="java:/myProjectEntityManagerFactory"/>

with:

<persistence:managed-persistence-context name="entityManager"
  auto-create="true"
  persistence-unit-jndi-name="java:/myProjectEntityManagerFactory"/>

And now the application is running with JBoss Seam 2.0.

It's important to keep up with versions. In this case, no further development is expected in the Seam 1.x branch, so upgrading is inevitable, and the earlier the upgrade is done, the easier it is.