You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@geronimo.apache.org by "Gianny Damour (JIRA)" <de...@geronimo.apache.org> on 2006/04/23 04:01:07 UTC

[jira] Closed: (GERONIMO-1871) Unable to deploy Tapestry app due to classloading issue

     [ http://issues.apache.org/jira/browse/GERONIMO-1871?page=all ]
     
Gianny Damour closed GERONIMO-1871:
-----------------------------------

    Resolution: Fixed

The problem was that the TCCL was set to the Tomcat WebAppClassLoader and not the Geronimo TomcatClassLoader. WebAppClassLoader was defining all the jars in WEB-INF/lib, its parent was TomcatClassLoader, which was also defining these jars. Hence this duplication.

> Unable to deploy Tapestry app due to classloading issue
> -------------------------------------------------------
>
>          Key: GERONIMO-1871
>          URL: http://issues.apache.org/jira/browse/GERONIMO-1871
>      Project: Geronimo
>         Type: Bug
>     Security: public(Regular issues) 
>   Components: kernel
>     Versions: 1.2
>  Environment: Windows XP
>     Reporter: Bryan Noll
>     Assignee: Gianny Damour
>     Priority: Critical

>
> Here is the stacktrace encountered when attempting to deploy a Tapestry application.  Please scroll down to see more info after the stack trace.
> org.apache.hivemind.ApplicationRuntimeException: Error: Module hivemind is duplicated!  Definition in jar:file:/C:/tools/geronimo-1.2-SNAPSHOT/config-store/42/war/WEB-INF/lib/hivemind-1.1.jar!/META-INF/hivemodule.xml has been ignored in favor of existing definition from jar:file:/C:/tools/geronimo-1.2-SNAPSHOT/config-store/42/war/WEB-INF/lib/hivemind-1.1.jar!/META-INF/hivemodule.xml.
> org.apache.hivemind.impl.StrictErrorHandler.error(StrictErrorHandler.java:39)
> org.apache.hivemind.impl.RegistryInfrastructureConstructor.addModuleDescriptor(RegistryInfrastructureConstructor.java:202)
> org.apache.hivemind.impl.RegistryBuilder.processModuleDescriptorProvider(RegistryBuilder.java:168)
> org.apache.hivemind.impl.RegistryBuilder.constructRegistry(RegistryBuilder.java:143)
> org.apache.tapestry.ApplicationServlet.constructRegistry(ApplicationServlet.java:253)
> org.apache.tapestry.ApplicationServlet.init(ApplicationServlet.java:194)
> org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1105)
> org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:932)
> org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:3915)
> org.apache.catalina.core.StandardContext.start(StandardContext.java:4176)
> org.apache.geronimo.tomcat.GeronimoStandardContext.access$101(GeronimoStandardContext.java:66)
> org.apache.geronimo.tomcat.GeronimoStandardContext$SystemMethodValve.invoke(GeronimoStandardContext.java:270)
> org.apache.geronimo.tomcat.valve.GeronimoBeforeAfterValve.invoke(GeronimoBeforeAfterValve.java:31)
> org.apache.geronimo.tomcat.GeronimoStandardContext.start(GeronimoStandardContext.java:185)
> org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:759)
> org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:739)
> org.apache.catalina.core.StandardHost.addChild(StandardHost.java:524)
> org.apache.geronimo.tomcat.TomcatContainer.addContext(TomcatContainer.java:287)
> org.apache.geronimo.tomcat.TomcatContainer$$FastClassByCGLIB$$9370b073.invoke(<generated>)
> net.sf.cglib.reflect.FastMethod.invoke(FastMethod.java:53)
> org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke(FastMethodInvoker.java:38)
> org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(GBeanOperation.java:118)
> org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(GBeanInstance.java:800)
> org.apache.geronimo.gbean.runtime.RawInvoker.invoke(RawInvoker.java:57)
> org.apache.geronimo.kernel.basic.RawOperationInvoker.invoke(RawOperationInvoker.java:36)
> org.apache.geronimo.kernel.basic.ProxyMethodInterceptor.intercept(ProxyMethodInterceptor.java:96)
> org.apache.geronimo.tomcat.TomcatContainer$$EnhancerByCGLIB$$7af7fb0d.addContext(<generated>)
> org.apache.geronimo.tomcat.TomcatWebAppContext.doStart(TomcatWebAppContext.java:416)
> org.apache.geronimo.gbean.runtime.GBeanInstance.createInstance(GBeanInstance.java:936)
> org.apache.geronimo.gbean.runtime.GBeanInstanceState.attemptFullStart(GBeanInstanceState.java:325)
> org.apache.geronimo.gbean.runtime.GBeanInstanceState.start(GBeanInstanceState.java:110)
> org.apache.geronimo.gbean.runtime.GBeanInstanceState.startRecursive(GBeanInstanceState.java:132)
> org.apache.geronimo.gbean.runtime.GBeanInstance.startRecursive(GBeanInstance.java:537)
> org.apache.geronimo.kernel.basic.BasicKernel.startRecursiveGBean(BasicKernel.java:208)
> org.apache.geronimo.kernel.config.Configuration.startRecursiveGBeans(Configuration.java:315)
> org.apache.geronimo.kernel.config.Configuration$$FastClassByCGLIB$$7f4b4a9b.invoke(<generated>)
> net.sf.cglib.reflect.FastMethod.invoke(FastMethod.java:53)
> org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke(FastMethodInvoker.java:38)
> org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(GBeanOperation.java:118)
> org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(GBeanInstance.java:835)
> org.apache.geronimo.kernel.basic.BasicKernel.invoke(BasicKernel.java:178)
> org.apache.geronimo.kernel.basic.BasicKernel.invoke(BasicKernel.java:173)
> org.apache.geronimo.kernel.config.ConfigurationManagerImpl.start(ConfigurationManagerImpl.java:229)
> org.apache.geronimo.kernel.config.ConfigurationManagerImpl$$FastClassByCGLIB$$fbed85d2.invoke(<generated>)
> net.sf.cglib.reflect.FastMethod.invoke(FastMethod.java:53)
> org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke(FastMethodInvoker.java:38)
> org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(GBeanOperation.java:118)
> org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(GBeanInstance.java:835)
> org.apache.geronimo.kernel.basic.BasicKernel.invoke(BasicKernel.java:178)
> org.apache.geronimo.kernel.KernelGBean.invoke(KernelGBean.java:125)
> org.apache.geronimo.kernel.KernelGBean$$FastClassByCGLIB$$1cccefc9.invoke(<generated>)
> net.sf.cglib.reflect.FastMethod.invoke(FastMethod.java:53)
> org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke(FastMethodInvoker.java:38)
> org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(GBeanOperation.java:118)
> org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(GBeanInstance.java:835)
> org.apache.geronimo.kernel.basic.BasicKernel.invoke(BasicKernel.java:178)
> org.apache.geronimo.kernel.jmx.MBeanServerDelegate.invoke(MBeanServerDelegate.java:117)
> mx4j.remote.rmi.RMIConnectionInvoker.invoke(RMIConnectionInvoker.java:219)
> sun.reflect.GeneratedMethodAccessor223.invoke(Unknown Source)
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> java.lang.reflect.Method.invoke(Method.java:324)
> mx4j.remote.rmi.RMIConnectionProxy.invoke(RMIConnectionProxy.java:34)
> mx4j.remote.rmi.RMIConnectionSubjectInvoker.chain(RMIConnectionSubjectInvoker.java:99)
> mx4j.remote.rmi.RMIConnectionSubjectInvoker.access$000(RMIConnectionSubjectInvoker.java:31)
> mx4j.remote.rmi.RMIConnectionSubjectInvoker$1.run(RMIConnectionSubjectInvoker.java:90)
> java.security.AccessController.doPrivileged(Native Method)
> javax.security.auth.Subject.doAsPrivileged(Subject.java:500)
> mx4j.remote.MX4JRemoteUtils.subjectInvoke(MX4JRemoteUtils.java:163)
> mx4j.remote.rmi.RMIConnectionSubjectInvoker.subjectInvoke(RMIConnectionSubjectInvoker.java:86)
> mx4j.remote.rmi.RMIConnectionSubjectInvoker.invoke(RMIConnectionSubjectInvoker.java:80)
> $Proxy4.invoke(Unknown Source)
> javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:221)
> sun.reflect.GeneratedMethodAccessor223.invoke(Unknown Source)
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> java.lang.reflect.Method.invoke(Method.java:324)
> sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:261)
> sun.rmi.transport.Transport$1.run(Transport.java:148)
> java.security.AccessController.doPrivileged(Native Method)
> sun.rmi.transport.Transport.serviceCall(Transport.java:144)
> sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:460)
> sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:701)
> java.lang.Thread.run(Thread.java:534) 
> The org.apache.hivemind.impl.XmlModuleDescriptorProvider.getDescriptorResources method of the hivemind-1.1.jar (depended upon by Tapestry) makes a call like:
> classLoader.getResources("META-INF/hivemodule.xml")
> and 14 different resources are returned.  There should only be 7, as each one of them are errantly duplicated.  See the following output from some println's added to the hivemind code.  This is printed out in the e.hasMoreElements while loop...
> 15:10:26,006 INFO  [XmlModuleDescriptorProvider] Processing modules visible to org.apache.hivemind.impl.DefaultClassResolver@1ce6eaf for resourcePath = META-INF/hivemodule.xml
> XmlModuleDescriptorProvider.getDescriptorResources - jar:file:/C:/tools/geronimo-1.2-SNAPSHOT/config-store/42/war/WEB-INF/lib/hivemind-1.1.jar!/META-INF/hivemodule.xml
> XmlModuleDescriptorProvider.getDescriptorResources - jar:file:/C:/tools/geronimo-1.2-SNAPSHOT/config-store/42/war/WEB-INF/lib/hivemind-lib-1.1.jar!/META-INF/hivemodule.xml
> XmlModuleDescriptorProvider.getDescriptorResources - jar:file:/C:/tools/geronimo-1.2-SNAPSHOT/config-store/42/war/WEB-INF/lib/tapestry-4.0.jar!/META-INF/hivemodule.xml
> XmlModuleDescriptorProvider.getDescriptorResources - jar:file:/C:/tools/geronimo-1.2-SNAPSHOT/config-store/42/war/WEB-INF/lib/tapestry-annotations-4.0.jar!/META-INF/hivemodule.xml
> XmlModuleDescriptorProvider.getDescriptorResources - jar:file:/C:/tools/geronimo-1.2-SNAPSHOT/config-store/42/war/WEB-INF/lib/tapestry-contrib-4.0.jar!/META-INF/hivemodule.xml
> XmlModuleDescriptorProvider.getDescriptorResources - jar:file:/C:/tools/geronimo-1.2-SNAPSHOT/config-store/42/war/WEB-INF/lib/tapestry-flash-0.1.1.jar!/META-INF/hivemodule.xml
> XmlModuleDescriptorProvider.getDescriptorResources - jar:file:/C:/tools/geronimo-1.2-SNAPSHOT/config-store/42/war/WEB-INF/lib/tapestry-spring-0.1.2.jar!/META-INF/hivemodule.xml
> XmlModuleDescriptorProvider.getDescriptorResources - jar:file:/C:/tools/geronimo-1.2-SNAPSHOT/config-store/42/war/WEB-INF/lib/hivemind-1.1.jar!/META-INF/hivemodule.xml
> XmlModuleDescriptorProvider.getDescriptorResources - jar:file:/C:/tools/geronimo-1.2-SNAPSHOT/config-store/42/war/WEB-INF/lib/hivemind-lib-1.1.jar!/META-INF/hivemodule.xml
> XmlModuleDescriptorProvider.getDescriptorResources - jar:file:/C:/tools/geronimo-1.2-SNAPSHOT/config-store/42/war/WEB-INF/lib/tapestry-4.0.jar!/META-INF/hivemodule.xml
> XmlModuleDescriptorProvider.getDescriptorResources - jar:file:/C:/tools/geronimo-1.2-SNAPSHOT/config-store/42/war/WEB-INF/lib/tapestry-annotations-4.0.jar!/META-INF/hivemodule.xml
> XmlModuleDescriptorProvider.getDescriptorResources - jar:file:/C:/tools/geronimo-1.2-SNAPSHOT/config-store/42/war/WEB-INF/lib/tapestry-contrib-4.0.jar!/META-INF/hivemodule.xml
> XmlModuleDescriptorProvider.getDescriptorResources - jar:file:/C:/tools/geronimo-1.2-SNAPSHOT/config-store/42/war/WEB-INF/lib/tapestry-flash-0.1.1.jar!/META-INF/hivemodule.xml
> XmlModuleDescriptorProvider.getDescriptorResources - jar:file:/C:/tools/geronimo-1.2-SNAPSHOT/config-store/42/war/WEB-INF/lib/tapestry-spring-0.1.2.jar!/META-INF/hivemodule.xml
> size of descriptors list = 14

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


Re: [jira] Closed: (GERONIMO-1871) Unable to deploy Tapestry app due to classloading issue

Posted by Gianny Damour <gi...@optusnet.com.au>.
Actually, the fix is already in 1.1 (I just checked via the Subversion 
Commits tab that the commit has not disappeared into the ether).

Thanks,
Gianny

Dain Sundstrom wrote:

> +1 absolutely
>
> Can you do it?
>
> -dain
>
> On Apr 22, 2006, at 7:36 PM, Jeff Genender wrote:
>
>> Can we get this in 1.1?  This is a pretty nasty bug.
>>
>> Jeff
>>
>>
>> Gianny Damour (JIRA) wrote:
>>
>>>      [ http://issues.apache.org/jira/browse/GERONIMO-1871?page=all ]
>>>      Gianny Damour closed GERONIMO-1871:
>>> -----------------------------------
>>>     Resolution: Fixed
>>> The problem was that the TCCL was set to the Tomcat  
>>> WebAppClassLoader and not the Geronimo TomcatClassLoader.  
>>> WebAppClassLoader was defining all the jars in WEB-INF/lib, its  
>>> parent was TomcatClassLoader, which was also defining these jars.  
>>> Hence this duplication.
>>>
>>>> Unable to deploy Tapestry app due to classloading issue
>>>> -------------------------------------------------------
>>>>
>>>>          Key: GERONIMO-1871
>>>>          URL: http://issues.apache.org/jira/browse/GERONIMO-1871
>>>>      Project: Geronimo
>>>>         Type: Bug
>>>>     Security: public(Regular issues)   Components: kernel
>>>>     Versions: 1.2
>>>>  Environment: Windows XP
>>>>     Reporter: Bryan Noll
>>>>     Assignee: Gianny Damour
>>>>     Priority: Critical
>>>



Re: [jira] Closed: (GERONIMO-1871) Unable to deploy Tapestry app due to classloading issue

Posted by Dain Sundstrom <da...@iq80.com>.
+1 absolutely

Can you do it?

-dain

On Apr 22, 2006, at 7:36 PM, Jeff Genender wrote:

> Can we get this in 1.1?  This is a pretty nasty bug.
>
> Jeff
>
>
> Gianny Damour (JIRA) wrote:
>>      [ http://issues.apache.org/jira/browse/GERONIMO-1871?page=all ]
>>      Gianny Damour closed GERONIMO-1871:
>> -----------------------------------
>>     Resolution: Fixed
>> The problem was that the TCCL was set to the Tomcat  
>> WebAppClassLoader and not the Geronimo TomcatClassLoader.  
>> WebAppClassLoader was defining all the jars in WEB-INF/lib, its  
>> parent was TomcatClassLoader, which was also defining these jars.  
>> Hence this duplication.
>>> Unable to deploy Tapestry app due to classloading issue
>>> -------------------------------------------------------
>>>
>>>          Key: GERONIMO-1871
>>>          URL: http://issues.apache.org/jira/browse/GERONIMO-1871
>>>      Project: Geronimo
>>>         Type: Bug
>>>     Security: public(Regular issues)   Components: kernel
>>>     Versions: 1.2
>>>  Environment: Windows XP
>>>     Reporter: Bryan Noll
>>>     Assignee: Gianny Damour
>>>     Priority: Critical
>>> Here is the stacktrace encountered when attempting to deploy a  
>>> Tapestry application.  Please scroll down to see more info after  
>>> the stack trace.
>>> org.apache.hivemind.ApplicationRuntimeException: Error: Module  
>>> hivemind is duplicated!  Definition in jar:file:/C:/tools/ 
>>> geronimo-1.2-SNAPSHOT/config-store/42/war/WEB-INF/lib/ 
>>> hivemind-1.1.jar!/META-INF/hivemodule.xml has been ignored in  
>>> favor of existing definition from jar:file:/C:/tools/geronimo-1.2- 
>>> SNAPSHOT/config-store/42/war/WEB-INF/lib/hivemind-1.1.jar!/META- 
>>> INF/hivemodule.xml.
>>> org.apache.hivemind.impl.StrictErrorHandler.error 
>>> (StrictErrorHandler.java:39)
>>> org.apache.hivemind.impl.RegistryInfrastructureConstructor.addModule 
>>> Descriptor(RegistryInfrastructureConstructor.java:202)
>>> org.apache.hivemind.impl.RegistryBuilder.processModuleDescriptorProv 
>>> ider(RegistryBuilder.java:168)
>>> org.apache.hivemind.impl.RegistryBuilder.constructRegistry 
>>> (RegistryBuilder.java:143)
>>> org.apache.tapestry.ApplicationServlet.constructRegistry 
>>> (ApplicationServlet.java:253)
>>> org.apache.tapestry.ApplicationServlet.init 
>>> (ApplicationServlet.java:194)
>>> org.apache.catalina.core.StandardWrapper.loadServlet 
>>> (StandardWrapper.java:1105)
>>> org.apache.catalina.core.StandardWrapper.load 
>>> (StandardWrapper.java:932)
>>> org.apache.catalina.core.StandardContext.loadOnStartup 
>>> (StandardContext.java:3915)
>>> org.apache.catalina.core.StandardContext.start 
>>> (StandardContext.java:4176)
>>> org.apache.geronimo.tomcat.GeronimoStandardContext.access$101 
>>> (GeronimoStandardContext.java:66)
>>> org.apache.geronimo.tomcat.GeronimoStandardContext 
>>> $SystemMethodValve.invoke(GeronimoStandardContext.java:270)
>>> org.apache.geronimo.tomcat.valve.GeronimoBeforeAfterValve.invoke 
>>> (GeronimoBeforeAfterValve.java:31)
>>> org.apache.geronimo.tomcat.GeronimoStandardContext.start 
>>> (GeronimoStandardContext.java:185)
>>> org.apache.catalina.core.ContainerBase.addChildInternal 
>>> (ContainerBase.java:759)
>>> org.apache.catalina.core.ContainerBase.addChild 
>>> (ContainerBase.java:739)
>>> org.apache.catalina.core.StandardHost.addChild(StandardHost.java: 
>>> 524)
>>> org.apache.geronimo.tomcat.TomcatContainer.addContext 
>>> (TomcatContainer.java:287)
>>> org.apache.geronimo.tomcat.TomcatContainer$$FastClassByCGLIB$ 
>>> $9370b073.invoke(<generated>)
>>> net.sf.cglib.reflect.FastMethod.invoke(FastMethod.java:53)
>>> org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke 
>>> (FastMethodInvoker.java:38)
>>> org.apache.geronimo.gbean.runtime.GBeanOperation.invoke 
>>> (GBeanOperation.java:118)
>>> org.apache.geronimo.gbean.runtime.GBeanInstance.invoke 
>>> (GBeanInstance.java:800)
>>> org.apache.geronimo.gbean.runtime.RawInvoker.invoke 
>>> (RawInvoker.java:57)
>>> org.apache.geronimo.kernel.basic.RawOperationInvoker.invoke 
>>> (RawOperationInvoker.java:36)
>>> org.apache.geronimo.kernel.basic.ProxyMethodInterceptor.intercept 
>>> (ProxyMethodInterceptor.java:96)
>>> org.apache.geronimo.tomcat.TomcatContainer$$EnhancerByCGLIB$ 
>>> $7af7fb0d.addContext(<generated>)
>>> org.apache.geronimo.tomcat.TomcatWebAppContext.doStart 
>>> (TomcatWebAppContext.java:416)
>>> org.apache.geronimo.gbean.runtime.GBeanInstance.createInstance 
>>> (GBeanInstance.java:936)
>>> org.apache.geronimo.gbean.runtime.GBeanInstanceState.attemptFullStar 
>>> t(GBeanInstanceState.java:325)
>>> org.apache.geronimo.gbean.runtime.GBeanInstanceState.start 
>>> (GBeanInstanceState.java:110)
>>> org.apache.geronimo.gbean.runtime.GBeanInstanceState.startRecursive( 
>>> GBeanInstanceState.java:132)
>>> org.apache.geronimo.gbean.runtime.GBeanInstance.startRecursive 
>>> (GBeanInstance.java:537)
>>> org.apache.geronimo.kernel.basic.BasicKernel.startRecursiveGBean 
>>> (BasicKernel.java:208)
>>> org.apache.geronimo.kernel.config.Configuration.startRecursiveGBeans 
>>> (Configuration.java:315)
>>> org.apache.geronimo.kernel.config.Configuration$$FastClassByCGLIB$ 
>>> $7f4b4a9b.invoke(<generated>)
>>> net.sf.cglib.reflect.FastMethod.invoke(FastMethod.java:53)
>>> org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke 
>>> (FastMethodInvoker.java:38)
>>> org.apache.geronimo.gbean.runtime.GBeanOperation.invoke 
>>> (GBeanOperation.java:118)
>>> org.apache.geronimo.gbean.runtime.GBeanInstance.invoke 
>>> (GBeanInstance.java:835)
>>> org.apache.geronimo.kernel.basic.BasicKernel.invoke 
>>> (BasicKernel.java:178)
>>> org.apache.geronimo.kernel.basic.BasicKernel.invoke 
>>> (BasicKernel.java:173)
>>> org.apache.geronimo.kernel.config.ConfigurationManagerImpl.start 
>>> (ConfigurationManagerImpl.java:229)
>>> org.apache.geronimo.kernel.config.ConfigurationManagerImpl$ 
>>> $FastClassByCGLIB$$fbed85d2.invoke(<generated>)
>>> net.sf.cglib.reflect.FastMethod.invoke(FastMethod.java:53)
>>> org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke 
>>> (FastMethodInvoker.java:38)
>>> org.apache.geronimo.gbean.runtime.GBeanOperation.invoke 
>>> (GBeanOperation.java:118)
>>> org.apache.geronimo.gbean.runtime.GBeanInstance.invoke 
>>> (GBeanInstance.java:835)
>>> org.apache.geronimo.kernel.basic.BasicKernel.invoke 
>>> (BasicKernel.java:178)
>>> org.apache.geronimo.kernel.KernelGBean.invoke(KernelGBean.java:125)
>>> org.apache.geronimo.kernel.KernelGBean$$FastClassByCGLIB$ 
>>> $1cccefc9.invoke(<generated>)
>>> net.sf.cglib.reflect.FastMethod.invoke(FastMethod.java:53)
>>> org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke 
>>> (FastMethodInvoker.java:38)
>>> org.apache.geronimo.gbean.runtime.GBeanOperation.invoke 
>>> (GBeanOperation.java:118)
>>> org.apache.geronimo.gbean.runtime.GBeanInstance.invoke 
>>> (GBeanInstance.java:835)
>>> org.apache.geronimo.kernel.basic.BasicKernel.invoke 
>>> (BasicKernel.java:178)
>>> org.apache.geronimo.kernel.jmx.MBeanServerDelegate.invoke 
>>> (MBeanServerDelegate.java:117)
>>> mx4j.remote.rmi.RMIConnectionInvoker.invoke 
>>> (RMIConnectionInvoker.java:219)
>>> sun.reflect.GeneratedMethodAccessor223.invoke(Unknown Source)
>>> sun.reflect.DelegatingMethodAccessorImpl.invoke 
>>> (DelegatingMethodAccessorImpl.java:25)
>>> java.lang.reflect.Method.invoke(Method.java:324)
>>> mx4j.remote.rmi.RMIConnectionProxy.invoke(RMIConnectionProxy.java: 
>>> 34)
>>> mx4j.remote.rmi.RMIConnectionSubjectInvoker.chain 
>>> (RMIConnectionSubjectInvoker.java:99)
>>> mx4j.remote.rmi.RMIConnectionSubjectInvoker.access$000 
>>> (RMIConnectionSubjectInvoker.java:31)
>>> mx4j.remote.rmi.RMIConnectionSubjectInvoker$1.run 
>>> (RMIConnectionSubjectInvoker.java:90)
>>> java.security.AccessController.doPrivileged(Native Method)
>>> javax.security.auth.Subject.doAsPrivileged(Subject.java:500)
>>> mx4j.remote.MX4JRemoteUtils.subjectInvoke(MX4JRemoteUtils.java:163)
>>> mx4j.remote.rmi.RMIConnectionSubjectInvoker.subjectInvoke 
>>> (RMIConnectionSubjectInvoker.java:86)
>>> mx4j.remote.rmi.RMIConnectionSubjectInvoker.invoke 
>>> (RMIConnectionSubjectInvoker.java:80)
>>> $Proxy4.invoke(Unknown Source)
>>> javax.management.remote.rmi.RMIConnectionImpl.invoke 
>>> (RMIConnectionImpl.java:221)
>>> sun.reflect.GeneratedMethodAccessor223.invoke(Unknown Source)
>>> sun.reflect.DelegatingMethodAccessorImpl.invoke 
>>> (DelegatingMethodAccessorImpl.java:25)
>>> java.lang.reflect.Method.invoke(Method.java:324)
>>> sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:261)
>>> sun.rmi.transport.Transport$1.run(Transport.java:148)
>>> java.security.AccessController.doPrivileged(Native Method)
>>> sun.rmi.transport.Transport.serviceCall(Transport.java:144)
>>> sun.rmi.transport.tcp.TCPTransport.handleMessages 
>>> (TCPTransport.java:460)
>>> sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run 
>>> (TCPTransport.java:701)
>>> java.lang.Thread.run(Thread.java:534) The  
>>> org.apache.hivemind.impl.XmlModuleDescriptorProvider.getDescriptorRe 
>>> sources method of the hivemind-1.1.jar (depended upon by  
>>> Tapestry) makes a call like:
>>> classLoader.getResources("META-INF/hivemodule.xml")
>>> and 14 different resources are returned.  There should only be 7,  
>>> as each one of them are errantly duplicated.  See the following  
>>> output from some println's added to the hivemind code.  This is  
>>> printed out in the e.hasMoreElements while loop...
>>> 15:10:26,006 INFO  [XmlModuleDescriptorProvider] Processing  
>>> modules visible to  
>>> org.apache.hivemind.impl.DefaultClassResolver@1ce6eaf for  
>>> resourcePath = META-INF/hivemodule.xml
>>> XmlModuleDescriptorProvider.getDescriptorResources - jar:file:/C:/ 
>>> tools/geronimo-1.2-SNAPSHOT/config-store/42/war/WEB-INF/lib/ 
>>> hivemind-1.1.jar!/META-INF/hivemodule.xml
>>> XmlModuleDescriptorProvider.getDescriptorResources - jar:file:/C:/ 
>>> tools/geronimo-1.2-SNAPSHOT/config-store/42/war/WEB-INF/lib/ 
>>> hivemind-lib-1.1.jar!/META-INF/hivemodule.xml
>>> XmlModuleDescriptorProvider.getDescriptorResources - jar:file:/C:/ 
>>> tools/geronimo-1.2-SNAPSHOT/config-store/42/war/WEB-INF/lib/ 
>>> tapestry-4.0.jar!/META-INF/hivemodule.xml
>>> XmlModuleDescriptorProvider.getDescriptorResources - jar:file:/C:/ 
>>> tools/geronimo-1.2-SNAPSHOT/config-store/42/war/WEB-INF/lib/ 
>>> tapestry-annotations-4.0.jar!/META-INF/hivemodule.xml
>>> XmlModuleDescriptorProvider.getDescriptorResources - jar:file:/C:/ 
>>> tools/geronimo-1.2-SNAPSHOT/config-store/42/war/WEB-INF/lib/ 
>>> tapestry-contrib-4.0.jar!/META-INF/hivemodule.xml
>>> XmlModuleDescriptorProvider.getDescriptorResources - jar:file:/C:/ 
>>> tools/geronimo-1.2-SNAPSHOT/config-store/42/war/WEB-INF/lib/ 
>>> tapestry-flash-0.1.1.jar!/META-INF/hivemodule.xml
>>> XmlModuleDescriptorProvider.getDescriptorResources - jar:file:/C:/ 
>>> tools/geronimo-1.2-SNAPSHOT/config-store/42/war/WEB-INF/lib/ 
>>> tapestry-spring-0.1.2.jar!/META-INF/hivemodule.xml
>>> XmlModuleDescriptorProvider.getDescriptorResources - jar:file:/C:/ 
>>> tools/geronimo-1.2-SNAPSHOT/config-store/42/war/WEB-INF/lib/ 
>>> hivemind-1.1.jar!/META-INF/hivemodule.xml
>>> XmlModuleDescriptorProvider.getDescriptorResources - jar:file:/C:/ 
>>> tools/geronimo-1.2-SNAPSHOT/config-store/42/war/WEB-INF/lib/ 
>>> hivemind-lib-1.1.jar!/META-INF/hivemodule.xml
>>> XmlModuleDescriptorProvider.getDescriptorResources - jar:file:/C:/ 
>>> tools/geronimo-1.2-SNAPSHOT/config-store/42/war/WEB-INF/lib/ 
>>> tapestry-4.0.jar!/META-INF/hivemodule.xml
>>> XmlModuleDescriptorProvider.getDescriptorResources - jar:file:/C:/ 
>>> tools/geronimo-1.2-SNAPSHOT/config-store/42/war/WEB-INF/lib/ 
>>> tapestry-annotations-4.0.jar!/META-INF/hivemodule.xml
>>> XmlModuleDescriptorProvider.getDescriptorResources - jar:file:/C:/ 
>>> tools/geronimo-1.2-SNAPSHOT/config-store/42/war/WEB-INF/lib/ 
>>> tapestry-contrib-4.0.jar!/META-INF/hivemodule.xml
>>> XmlModuleDescriptorProvider.getDescriptorResources - jar:file:/C:/ 
>>> tools/geronimo-1.2-SNAPSHOT/config-store/42/war/WEB-INF/lib/ 
>>> tapestry-flash-0.1.1.jar!/META-INF/hivemodule.xml
>>> XmlModuleDescriptorProvider.getDescriptorResources - jar:file:/C:/ 
>>> tools/geronimo-1.2-SNAPSHOT/config-store/42/war/WEB-INF/lib/ 
>>> tapestry-spring-0.1.2.jar!/META-INF/hivemodule.xml
>>> size of descriptors list = 14


Re: [jira] Closed: (GERONIMO-1871) Unable to deploy Tapestry app due to classloading issue

Posted by Jeff Genender <jg...@savoirtech.com>.
Can we get this in 1.1?  This is a pretty nasty bug.

Jeff


Gianny Damour (JIRA) wrote:
>      [ http://issues.apache.org/jira/browse/GERONIMO-1871?page=all ]
>      
> Gianny Damour closed GERONIMO-1871:
> -----------------------------------
> 
>     Resolution: Fixed
> 
> The problem was that the TCCL was set to the Tomcat WebAppClassLoader and not the Geronimo TomcatClassLoader. WebAppClassLoader was defining all the jars in WEB-INF/lib, its parent was TomcatClassLoader, which was also defining these jars. Hence this duplication.
> 
>> Unable to deploy Tapestry app due to classloading issue
>> -------------------------------------------------------
>>
>>          Key: GERONIMO-1871
>>          URL: http://issues.apache.org/jira/browse/GERONIMO-1871
>>      Project: Geronimo
>>         Type: Bug
>>     Security: public(Regular issues) 
>>   Components: kernel
>>     Versions: 1.2
>>  Environment: Windows XP
>>     Reporter: Bryan Noll
>>     Assignee: Gianny Damour
>>     Priority: Critical
> 
>> Here is the stacktrace encountered when attempting to deploy a Tapestry application.  Please scroll down to see more info after the stack trace.
>> org.apache.hivemind.ApplicationRuntimeException: Error: Module hivemind is duplicated!  Definition in jar:file:/C:/tools/geronimo-1.2-SNAPSHOT/config-store/42/war/WEB-INF/lib/hivemind-1.1.jar!/META-INF/hivemodule.xml has been ignored in favor of existing definition from jar:file:/C:/tools/geronimo-1.2-SNAPSHOT/config-store/42/war/WEB-INF/lib/hivemind-1.1.jar!/META-INF/hivemodule.xml.
>> org.apache.hivemind.impl.StrictErrorHandler.error(StrictErrorHandler.java:39)
>> org.apache.hivemind.impl.RegistryInfrastructureConstructor.addModuleDescriptor(RegistryInfrastructureConstructor.java:202)
>> org.apache.hivemind.impl.RegistryBuilder.processModuleDescriptorProvider(RegistryBuilder.java:168)
>> org.apache.hivemind.impl.RegistryBuilder.constructRegistry(RegistryBuilder.java:143)
>> org.apache.tapestry.ApplicationServlet.constructRegistry(ApplicationServlet.java:253)
>> org.apache.tapestry.ApplicationServlet.init(ApplicationServlet.java:194)
>> org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1105)
>> org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:932)
>> org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:3915)
>> org.apache.catalina.core.StandardContext.start(StandardContext.java:4176)
>> org.apache.geronimo.tomcat.GeronimoStandardContext.access$101(GeronimoStandardContext.java:66)
>> org.apache.geronimo.tomcat.GeronimoStandardContext$SystemMethodValve.invoke(GeronimoStandardContext.java:270)
>> org.apache.geronimo.tomcat.valve.GeronimoBeforeAfterValve.invoke(GeronimoBeforeAfterValve.java:31)
>> org.apache.geronimo.tomcat.GeronimoStandardContext.start(GeronimoStandardContext.java:185)
>> org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:759)
>> org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:739)
>> org.apache.catalina.core.StandardHost.addChild(StandardHost.java:524)
>> org.apache.geronimo.tomcat.TomcatContainer.addContext(TomcatContainer.java:287)
>> org.apache.geronimo.tomcat.TomcatContainer$$FastClassByCGLIB$$9370b073.invoke(<generated>)
>> net.sf.cglib.reflect.FastMethod.invoke(FastMethod.java:53)
>> org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke(FastMethodInvoker.java:38)
>> org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(GBeanOperation.java:118)
>> org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(GBeanInstance.java:800)
>> org.apache.geronimo.gbean.runtime.RawInvoker.invoke(RawInvoker.java:57)
>> org.apache.geronimo.kernel.basic.RawOperationInvoker.invoke(RawOperationInvoker.java:36)
>> org.apache.geronimo.kernel.basic.ProxyMethodInterceptor.intercept(ProxyMethodInterceptor.java:96)
>> org.apache.geronimo.tomcat.TomcatContainer$$EnhancerByCGLIB$$7af7fb0d.addContext(<generated>)
>> org.apache.geronimo.tomcat.TomcatWebAppContext.doStart(TomcatWebAppContext.java:416)
>> org.apache.geronimo.gbean.runtime.GBeanInstance.createInstance(GBeanInstance.java:936)
>> org.apache.geronimo.gbean.runtime.GBeanInstanceState.attemptFullStart(GBeanInstanceState.java:325)
>> org.apache.geronimo.gbean.runtime.GBeanInstanceState.start(GBeanInstanceState.java:110)
>> org.apache.geronimo.gbean.runtime.GBeanInstanceState.startRecursive(GBeanInstanceState.java:132)
>> org.apache.geronimo.gbean.runtime.GBeanInstance.startRecursive(GBeanInstance.java:537)
>> org.apache.geronimo.kernel.basic.BasicKernel.startRecursiveGBean(BasicKernel.java:208)
>> org.apache.geronimo.kernel.config.Configuration.startRecursiveGBeans(Configuration.java:315)
>> org.apache.geronimo.kernel.config.Configuration$$FastClassByCGLIB$$7f4b4a9b.invoke(<generated>)
>> net.sf.cglib.reflect.FastMethod.invoke(FastMethod.java:53)
>> org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke(FastMethodInvoker.java:38)
>> org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(GBeanOperation.java:118)
>> org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(GBeanInstance.java:835)
>> org.apache.geronimo.kernel.basic.BasicKernel.invoke(BasicKernel.java:178)
>> org.apache.geronimo.kernel.basic.BasicKernel.invoke(BasicKernel.java:173)
>> org.apache.geronimo.kernel.config.ConfigurationManagerImpl.start(ConfigurationManagerImpl.java:229)
>> org.apache.geronimo.kernel.config.ConfigurationManagerImpl$$FastClassByCGLIB$$fbed85d2.invoke(<generated>)
>> net.sf.cglib.reflect.FastMethod.invoke(FastMethod.java:53)
>> org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke(FastMethodInvoker.java:38)
>> org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(GBeanOperation.java:118)
>> org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(GBeanInstance.java:835)
>> org.apache.geronimo.kernel.basic.BasicKernel.invoke(BasicKernel.java:178)
>> org.apache.geronimo.kernel.KernelGBean.invoke(KernelGBean.java:125)
>> org.apache.geronimo.kernel.KernelGBean$$FastClassByCGLIB$$1cccefc9.invoke(<generated>)
>> net.sf.cglib.reflect.FastMethod.invoke(FastMethod.java:53)
>> org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke(FastMethodInvoker.java:38)
>> org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(GBeanOperation.java:118)
>> org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(GBeanInstance.java:835)
>> org.apache.geronimo.kernel.basic.BasicKernel.invoke(BasicKernel.java:178)
>> org.apache.geronimo.kernel.jmx.MBeanServerDelegate.invoke(MBeanServerDelegate.java:117)
>> mx4j.remote.rmi.RMIConnectionInvoker.invoke(RMIConnectionInvoker.java:219)
>> sun.reflect.GeneratedMethodAccessor223.invoke(Unknown Source)
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>> java.lang.reflect.Method.invoke(Method.java:324)
>> mx4j.remote.rmi.RMIConnectionProxy.invoke(RMIConnectionProxy.java:34)
>> mx4j.remote.rmi.RMIConnectionSubjectInvoker.chain(RMIConnectionSubjectInvoker.java:99)
>> mx4j.remote.rmi.RMIConnectionSubjectInvoker.access$000(RMIConnectionSubjectInvoker.java:31)
>> mx4j.remote.rmi.RMIConnectionSubjectInvoker$1.run(RMIConnectionSubjectInvoker.java:90)
>> java.security.AccessController.doPrivileged(Native Method)
>> javax.security.auth.Subject.doAsPrivileged(Subject.java:500)
>> mx4j.remote.MX4JRemoteUtils.subjectInvoke(MX4JRemoteUtils.java:163)
>> mx4j.remote.rmi.RMIConnectionSubjectInvoker.subjectInvoke(RMIConnectionSubjectInvoker.java:86)
>> mx4j.remote.rmi.RMIConnectionSubjectInvoker.invoke(RMIConnectionSubjectInvoker.java:80)
>> $Proxy4.invoke(Unknown Source)
>> javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:221)
>> sun.reflect.GeneratedMethodAccessor223.invoke(Unknown Source)
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>> java.lang.reflect.Method.invoke(Method.java:324)
>> sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:261)
>> sun.rmi.transport.Transport$1.run(Transport.java:148)
>> java.security.AccessController.doPrivileged(Native Method)
>> sun.rmi.transport.Transport.serviceCall(Transport.java:144)
>> sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:460)
>> sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:701)
>> java.lang.Thread.run(Thread.java:534) 
>> The org.apache.hivemind.impl.XmlModuleDescriptorProvider.getDescriptorResources method of the hivemind-1.1.jar (depended upon by Tapestry) makes a call like:
>> classLoader.getResources("META-INF/hivemodule.xml")
>> and 14 different resources are returned.  There should only be 7, as each one of them are errantly duplicated.  See the following output from some println's added to the hivemind code.  This is printed out in the e.hasMoreElements while loop...
>> 15:10:26,006 INFO  [XmlModuleDescriptorProvider] Processing modules visible to org.apache.hivemind.impl.DefaultClassResolver@1ce6eaf for resourcePath = META-INF/hivemodule.xml
>> XmlModuleDescriptorProvider.getDescriptorResources - jar:file:/C:/tools/geronimo-1.2-SNAPSHOT/config-store/42/war/WEB-INF/lib/hivemind-1.1.jar!/META-INF/hivemodule.xml
>> XmlModuleDescriptorProvider.getDescriptorResources - jar:file:/C:/tools/geronimo-1.2-SNAPSHOT/config-store/42/war/WEB-INF/lib/hivemind-lib-1.1.jar!/META-INF/hivemodule.xml
>> XmlModuleDescriptorProvider.getDescriptorResources - jar:file:/C:/tools/geronimo-1.2-SNAPSHOT/config-store/42/war/WEB-INF/lib/tapestry-4.0.jar!/META-INF/hivemodule.xml
>> XmlModuleDescriptorProvider.getDescriptorResources - jar:file:/C:/tools/geronimo-1.2-SNAPSHOT/config-store/42/war/WEB-INF/lib/tapestry-annotations-4.0.jar!/META-INF/hivemodule.xml
>> XmlModuleDescriptorProvider.getDescriptorResources - jar:file:/C:/tools/geronimo-1.2-SNAPSHOT/config-store/42/war/WEB-INF/lib/tapestry-contrib-4.0.jar!/META-INF/hivemodule.xml
>> XmlModuleDescriptorProvider.getDescriptorResources - jar:file:/C:/tools/geronimo-1.2-SNAPSHOT/config-store/42/war/WEB-INF/lib/tapestry-flash-0.1.1.jar!/META-INF/hivemodule.xml
>> XmlModuleDescriptorProvider.getDescriptorResources - jar:file:/C:/tools/geronimo-1.2-SNAPSHOT/config-store/42/war/WEB-INF/lib/tapestry-spring-0.1.2.jar!/META-INF/hivemodule.xml
>> XmlModuleDescriptorProvider.getDescriptorResources - jar:file:/C:/tools/geronimo-1.2-SNAPSHOT/config-store/42/war/WEB-INF/lib/hivemind-1.1.jar!/META-INF/hivemodule.xml
>> XmlModuleDescriptorProvider.getDescriptorResources - jar:file:/C:/tools/geronimo-1.2-SNAPSHOT/config-store/42/war/WEB-INF/lib/hivemind-lib-1.1.jar!/META-INF/hivemodule.xml
>> XmlModuleDescriptorProvider.getDescriptorResources - jar:file:/C:/tools/geronimo-1.2-SNAPSHOT/config-store/42/war/WEB-INF/lib/tapestry-4.0.jar!/META-INF/hivemodule.xml
>> XmlModuleDescriptorProvider.getDescriptorResources - jar:file:/C:/tools/geronimo-1.2-SNAPSHOT/config-store/42/war/WEB-INF/lib/tapestry-annotations-4.0.jar!/META-INF/hivemodule.xml
>> XmlModuleDescriptorProvider.getDescriptorResources - jar:file:/C:/tools/geronimo-1.2-SNAPSHOT/config-store/42/war/WEB-INF/lib/tapestry-contrib-4.0.jar!/META-INF/hivemodule.xml
>> XmlModuleDescriptorProvider.getDescriptorResources - jar:file:/C:/tools/geronimo-1.2-SNAPSHOT/config-store/42/war/WEB-INF/lib/tapestry-flash-0.1.1.jar!/META-INF/hivemodule.xml
>> XmlModuleDescriptorProvider.getDescriptorResources - jar:file:/C:/tools/geronimo-1.2-SNAPSHOT/config-store/42/war/WEB-INF/lib/tapestry-spring-0.1.2.jar!/META-INF/hivemodule.xml
>> size of descriptors list = 14
>