[richfaces-issues] [JBoss JIRA] (RF-13206) Failure to reset ClassLoader when AWT Initialization errors

Donald Oakes (JIRA) jira-events at lists.jboss.org
Fri Sep 20 15:28:03 EDT 2013


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


More information about the richfaces-issues mailing list