• Post Reply Bookmark Topic Watch Topic
  • New Topic

ManagedBeanCreation, JSF, and ClassLoading

Peter Goldstein
Posts: 15
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I'm having a JSF issue that seems (at least from the stack trace) to have its root cause in a JBoss class loader issue. I was hoping someone on this list might be able to help shed some light on the problem.

I'm running JBoss 4.0.3SP1, with the EJB3 final draft upgrade (RC5?) and a version of MyFaces that's been upgraded to 1.1.1. I'm using Facelets 1.0.3.

I have a session scoped bean defined in my managed bean list in faces-config.xml. It's defined using the XML snippet:

<description>Used for managing localized dates for weeks.</description>

Now, I should be able to invoke the managed bean creation facility from Java code. This facility should check for a pre-existing bean with that name, and create a new WeekBean if one doesn't already exist in scope.

I call this facility using a code snippet like:

FacesContext facesContext = FacesContext.getCurrentInstance();
ValueBinding vb = facesContext.getApplication().createValueBinding("#{weekBean}");
WeekBean weekBean =

I would expect this to yield a WeekBean. Instead I get an exception and a long stack trace. In the trace I see this:

Caused by: java.lang.ClassNotFoundException: No ClassLoaders found for: us.emotive.challengeme.components.program.WeekBean
at org.jboss.mx.loading.LoadMgr3.beginLoadTask(LoadMgr3.java:198)
at org.jboss.mx.loading.RepositoryClassLoader.loadClassImpl(RepositoryClassLoader.java:475)
at org.jboss.mx.loading.RepositoryClassLoader.loadClass(RepositoryClassLoader.java:377)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)

This is odd because:

i) If I use a reference to weekBean in a JSF/Facelets page, as opposed to a backing bean, everything gets instantiated fine.
ii) I can alter the above code to look like:

FacesContext facesContext = FacesContext.getCurrentInstance();
ValueBinding vb = facesContext.getApplication().createValueBinding("#{sessionScope.weekBean}");
WeekBean weekBean =
if (weekBean == null) {
weekBean = new WeekBean();
vb.setValue(facesContext, weekBean);

and all the classes get loaded and instantiated just fine.

I'm suspecting a bug, but considering the number of different technologies involved I'm not sure where. I was hoping someone on this list might have a clue, and help me cut short the process of swapping in and out different components.

Has anyone seen this before? Is this a known issue? Anyone know whether this is a bug or I'm doing something wrong? Any guidance would be appreciated.
  • Post Reply Bookmark Topic Watch Topic
  • New Topic
Boost this thread!