Donald Oakes created RF-13206:
---------------------------------
Summary: Failure to reset ClassLoader when AWT Initialization errors
Key: RF-13206
URL:
https://issues.jboss.org/browse/RF-13206
Project: RichFaces
Issue Type: Bug
Security Level: Public (Everyone can see)
Components: core
Affects Versions: 4.3.3
Environment: ServiceMix
Reporter: Donald Oakes
Priority: Minor
In org.richfaces.application.InitializationListener.AWTInitializer, the initalize() method
can fail to reset the context ClassLoader despite the finally block that should do that
(from line 195):
} finally {
if (testStream != null) {
try {
testStream.close();
} catch (IOException e) {
LOGGER.error(e.getMessage(), e);
}
}
thread.setContextClassLoader(initialTCCL);
}
In my OSGi environment, the testStream.close() invocation throws the NoClassDefFoundError
pasted below. This circumvents the subsequent intention to restore the context
ClassLoader. In effect, if AWT initialization fails the context ClassLoader is left in a
bad state that prevents future ServiceTracker processing and hoses up the Faces
initialization.
java.lang.NoClassDefFoundError: javax/imageio/stream/ImageInputStream
at
org.richfaces.application.InitializationListener$AWTInitializer.initialize(InitializationListener.java:198)
at
org.richfaces.application.InitializationListener.initializeAWT(InitializationListener.java:94)
at
org.richfaces.application.InitializationListener.onStart(InitializationListener.java:78)
at
org.richfaces.application.InitializationListener.processEvent(InitializationListener.java:152)
at javax.faces.event.SystemEvent.processListener(SystemEvent.java:43)
at
org.apache.myfaces.application.ApplicationImpl._traverseListenerList(ApplicationImpl.java:2471)
at
org.apache.myfaces.application.ApplicationImpl.access$000(ApplicationImpl.java:120)
at
org.apache.myfaces.application.ApplicationImpl$SystemListenerEntry.publish(ApplicationImpl.java:2662)
at
org.apache.myfaces.application.ApplicationImpl.publishEvent(ApplicationImpl.java:601)
at
org.apache.myfaces.webapp.AbstractFacesInitializer._dispatchApplicationEvent(AbstractFacesInitializer.java:286)
at
org.apache.myfaces.webapp.AbstractFacesInitializer.initFaces(AbstractFacesInitializer.java:154)
at
org.apache.myfaces.webapp.StartupServletContextListener.contextInitialized(StartupServletContextListener.java:119)
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see:
http://www.atlassian.com/software/jira