[ 
https://issues.apache.org/jira/browse/FELIX-3939?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13589745#comment-13589745
 ] 

Richard S. Hall commented on FELIX-3939:
----------------------------------------

I think what we can do in this instance is simply catch the IAE since it 
appears that the race condition is harmless. Subsequent calls will correctly 
see that getPackage() returns non-null and won't continue to get exceptions, 
only the losers of racing threads will, which if we catch and swallow, then no 
one has to know.
                
> IllegalArgumentException from ClassLoader.definePackage
> -------------------------------------------------------
>
>                 Key: FELIX-3939
>                 URL: https://issues.apache.org/jira/browse/FELIX-3939
>             Project: Felix
>          Issue Type: Bug
>          Components: Framework
>    Affects Versions: framework-4.2.0
>         Environment: JDK 1.7
>            Reporter: Sahoo
>            Priority: Blocker
>             Fix For: framework-4.4.0
>
>
> Could parallel class loading feature implementation be the reason behind a 
> recent regression that we are seeing in GlassFish as reported in [1]? The 
> exception stack is like this:
> Caused by: java.lang.IllegalArgumentException: 
> com.sun.xml.ws.transport.http.servlet
> at java.lang.ClassLoader.definePackage(ClassLoader.java:1601)
> at 
> org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.findClass(BundleWiringImpl.java:2190)
> at 
> org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1472)
> at 
> org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:75)
> at 
> org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1923)
> at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
> at 
> org.apache.felix.framework.BundleWiringImpl.getClassByDelegation(BundleWiringImpl.java:1357)
> at 
> org.apache.felix.framework.BundleWiringImpl.searchDynamicImports(BundleWiringImpl.java:1598)
> at 
> org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1479)
> at 
> org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:75)
> at 
> org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1923)
> at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
> at org.apache.felix.framework.Felix.loadBundleClass(Felix.java:1832)
> at org.apache.felix.framework.BundleImpl.loadClass(BundleImpl.java:937)
> at org.jvnet.hk2.osgiadapter.OSGiModuleImpl$4$1.run(OSGiModuleImpl.java:434)
> at org.jvnet.hk2.osgiadapter.OSGiModuleImpl$4$1.run(OSGiModuleImpl.java:431)
> at java.security.AccessController.doPrivileged(Native Method)
> at 
> org.jvnet.hk2.osgiadapter.OSGiModuleImpl$4.loadClass(OSGiModuleImpl.java:431)
> at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
> at 
> com.sun.enterprise.v3.server.APIClassLoaderServiceImpl$APIClassLoader.loadClass(APIClassLoaderServiceImpl.java:238)
> at java.lang.ClassLoader.loadClass(ClassLoader.java:410)
> at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
> at 
> org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1676)
> at 
> org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1579)
> at java.lang.Class.forName0(Native Method)
> at java.lang.Class.forName(Class.java:264)
> at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:363)
> at java.util.ServiceLoader$1.next(ServiceLoader.java:445)
> at 
> org.glassfish.web.loader.ServletContainerInitializerUtil.getInterestList(ServletContainerInitializerUtil.java:193)
> at 
> org.apache.catalina.core.StandardContext.callServletContainerInitializers(StandardContext.java:5955)
> at 
> com.sun.enterprise.web.WebModule.callServletContainerInitializers(WebModule.java:779)
> at org.apache.catalina.core.StandardContext.start(StandardContext.java:5888)
> IllegalArgumentException is thrown by ClassLoader.definePackage if package 
> already exists as per javadoc of that method.
> [1] http://java.net/jira/browse/GLASSFISH-19712

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

Reply via email to