You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@felix.apache.org by "Richard S. Hall (JIRA)" <ji...@apache.org> on 2013/02/28 19:17:12 UTC

[jira] [Commented] (FELIX-3939) IllegalArgumentException from ClassLoader.definePackage

    [ 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