-
1. Re: jboss-3.0.4_tomcat-4.1.12 UnifiedClassLoader3 problem
adrian.brock Nov 10, 2002 10:24 AM (in response to pdhar)My guess is that if you post the rest of the
stack trace you have Class.forName() in there
somewhere.
My guess is also that tomcat-4.0.4 didn't include
the class using Class.forName() but tomcat-4.1.12
does.
Regards,
Adrian -
2. Re: jboss-3.0.4_tomcat-4.1.12 UnifiedClassLoader3 problem
pdhar Nov 10, 2002 2:22 PM (in response to pdhar)20:31:49,083 INFO [Engine] ContextConfig[]: Added certificates -> request attribute Valve
20:31:49,093 INFO [Engine] ContextConfig[]: Configured an authenticator for method FORM
20:31:50,916 INFO [EmbeddedCatalinaService41] Using Java2 parent classloader delegation: true
20:31:50,916 INFO [Engine] StandardManager[]: Seeding random number generator class java.security.SecureRandom
20:31:50,916 INFO [Engine] StandardManager[]: Seeding of random number generator has been completed
20:31:51,346 INFO [Engine] StandardWrapper[:webdav]: Loading container servlet webdav
20:31:51,396 INFO [Engine] StandardWrapper[:default]: Loading container servlet default
20:31:51,506 ERROR [Digester] Begin event threw exception
java.lang.ClassNotFoundException: No ClassLoaders found for: org.apache.commons.workflow.base.BaseActivity
at org.jboss.mx.loading.LoadMgr.beginLoadTask(LoadMgr.java:138)
at org.jboss.mx.loading.UnifiedClassLoader3.loadClass(UnifiedClassLoader3.java:140)
at java.lang.ClassLoader.loadClass(ClassLoader.java:262)
at org.apache.commons.digester.ObjectCreateRule.begin(ObjectCreateRule.java:252)
at org.apache.commons.digester.Digester.startElement(Digester.java:1237)
at org.apache.xerces.parsers.SAXParser.startElement(SAXParser.java:1371)
at org.apache.xerces.validators.common.XMLValidator.callStartElement(XMLValidator.java:828)
at org.apache.xerces.framework.XMLDocumentScanner.scanElement(XMLDocumentScanner.java:1852)
at org.apache.xerces.framework.XMLDocumentScanner$ContentDispatcher.dispatch(XMLDocumentScanner.java:1000)
at org.apache.xerces.framework.XMLDocumentScanner.parseSome(XMLDocumentScanner.java:380)
at org.apache.xerces.framework.XMLParser.parse(XMLParser.java:908)
at org.apache.commons.digester.Digester.parse(Digester.java:1514)
at com.pkd.struts.xtn.workflow.RegistryServlet.parse(RegistryServlet.java:431)
at com.pkd.struts.xtn.workflow.RegistryServlet.init(RegistryServlet.java:380)
at javax.servlet.GenericServlet.init(GenericServlet.java:256)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:924)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:813)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:3341)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:3534)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:821)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:807)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:579)
at org.jboss.web.catalina.EmbeddedCatalinaService41.createWebContext(EmbeddedCatalinaService41.java:432)
at org.jboss.web.catalina.EmbeddedCatalinaService41.performDeploy(EmbeddedCatalinaService41.java:306)
at org.jboss.web.AbstractWebContainer.start(AbstractWebContainer.java:300)
at org.jboss.deployment.MainDeployer.start(MainDeployer.java:807)
at org.jboss.deployment.MainDeployer.start(MainDeployer.java:799)
at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:621)
at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:585)
at sun.reflect.GeneratedMethodAccessor9.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(ReflectedMBeanDispatcher.java:284)
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:517)
at org.jboss.util.jmx.MBeanProxy.invoke(MBeanProxy.java:174)
at $Proxy4.deploy(Unknown Source)
at org.jboss.deployment.scanner.URLDeploymentScanner.deploy(URLDeploymentScanner.java:435)
at org.jboss.deployment.scanner.URLDeploymentScanner.scanDirectory(URLDeploymentScanner.java:656)
at org.jboss.deployment.scanner.URLDeploymentScanner.scan(URLDeploymentScanner.java:507)
at org.jboss.deployment.scanner.AbstractDeploymentScanner.startService(AbstractDeploymentScanner.java:261)
at org.jboss.system.ServiceMBeanSupport.start(ServiceMBeanSupport.java:165)
at sun.reflect.GeneratedMethodAccessor7.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(ReflectedMBeanDispatcher.java:284)
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:517)
at org.jboss.system.ServiceController$ServiceProxy.invoke(ServiceController.java:978)
at $Proxy0.start(Unknown Source)
at org.jboss.system.ServiceController.start(ServiceController.java:398)
at sun.reflect.GeneratedMethodAccessor6.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(ReflectedMBeanDispatcher.java:284)
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:517)
at org.jboss.util.jmx.MBeanProxy.invoke(MBeanProxy.java:174)
at $Proxy3.start(Unknown Source)
at org.jboss.deployment.SARDeployer.start(SARDeployer.java:249)
at org.jboss.deployment.MainDeployer.start(MainDeployer.java:807)
at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:621)
at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:585)
at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:569)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(ReflectedMBeanDispatcher.java:284)
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:517)
at org.jboss.system.server.ServerImpl.doStart(ServerImpl.java:324)
at org.jboss.system.server.ServerImpl.start(ServerImpl.java:221)
at org.jboss.Main.boot(Main.java:148)
at org.jboss.Main$1.run(Main.java:381)
at java.lang.Thread.run(Thread.java:536) -
3. Re: jboss-3.0.4_tomcat-4.1.12 UnifiedClassLoader3 problem
pdhar Nov 10, 2002 2:23 PM (in response to pdhar)attached server trace file for org.jboss.mx.loading package
-
4. Re: jboss-3.0.4_tomcat-4.1.12 UnifiedClassLoader3 problem
pdhar Nov 10, 2002 2:23 PM (in response to pdhar)attached server trace file for org.jboss.mx.loading package
-
5. Re: jboss-3.0.4_tomcat-4.1.12 UnifiedClassLoader3 problem
adrian.brock Nov 10, 2002 2:45 PM (in response to pdhar)http://cvs.apache.org/viewcvs.cgi/jakarta-commons/digester/src/java/org/apache/commons/digester/ObjectCreateRule.java?rev=1.12&content-type=text/vnd.viewcvs-markup
This is just as bad.
It starts the search at the location of the digester
class which is probably
server/default/lib
It should be using the WEB-INF/lib which is
Thread.currentThread().getContextClassLoader()
not
digester.getClassLoader()
One day the apache guys will learn to play
nice without having to put every jar in WEB-INF/lib
and turning on the servlet classloader.
Regards,
Adrian -
6. Re: jboss-3.0.4_tomcat-4.1.12 UnifiedClassLoader3 problem
pdhar Nov 11, 2002 1:30 PM (in response to pdhar)Adrian,
The digester.getClassLoader() is actually doing this
public ClassLoader getClassLoader() {
if (this.classLoader != null) {
return (this.classLoader);
}
if (this.useContextClassLoader) {
ClassLoader classLoader =
Thread.currentThread().getContextClassLoader();
if (classLoader != null) {
return (classLoader);
}
}
return (this.getClass().getClassLoader());
}
If useContextClassLoader is set before calling the digester.parse() it will use the Thread.currentThread().getContextClassLoader() which is what you have explained. Apparently I made changes to the com.pkd.struts.xtn.workflow.RegistryServlet.init servlet init params to set the digester to use context classloader.The results are same as before.
The other thing to notice in the Stack trace is the classloader being used by the digester, which is org.jboss.mx.loading.UnifiedClassLoader3. It must be able to find the class from the WEB-INF/lib jars.
java.lang.ClassNotFoundException: No ClassLoaders found for: org.apache.commons.workflow.base.BaseActivity
at org.jboss.mx.loading.LoadMgr.beginLoadTask(LoadMgr.java:138)
at org.jboss.mx.loading.UnifiedClassLoader3.loadClass(UnifiedClassLoader3.java:140)
at java.lang.ClassLoader.loadClass(ClassLoader.java:255)
at org.apache.commons.digester.ObjectCreateRule.begin(ObjectCreateRule.java:252)
Regards
Pranab -
7. Re: jboss-3.0.4_tomcat-4.1.12 UnifiedClassLoader3 problem
pdhar Nov 11, 2002 4:08 PM (in response to pdhar)Found the problem in RegistryServlet.java from struts/contributions which does not set the useContextClassLoader for the digester.Once it is done deployment was smooth. Thanks for your help Adrian.
Pranab