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

Brian Leathem (JIRA) jira-events at lists.jboss.org
Fri Nov 15 02:19:06 EST 2013


     [ https://issues.jboss.org/browse/RF-13206?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Brian Leathem updated RF-13206:
-------------------------------

    Fix Version/s: 5-Tracking

    
> 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
>             Fix For: 5-Tracking
>
>
> 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):
> {code:title=org.richfaces.application.InitializationListener.AWTInitializer#195}
>             } finally {
>                 if (testStream != null) {
>                     try {
>                         testStream.close();
>                     } catch (IOException e) {
>                         LOGGER.error(e.getMessage(), e);
>                     }
>                 }
>                 thread.setContextClassLoader(initialTCCL);
>             }
> {code}
> 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.
> {code}
> 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)
> {code}

--
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