You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by Matthias Brunner <mb...@blumenstrasse.vol.at> on 2002/11/14 14:43:57 UTC
Class loader madness and useless error reporting
Hello,
I do not know whether this is a bug in tomcat or axis or both (in
fact, I do not even know if it is it a bug at all or it is me how is
dumb).
But for now I will only report it here please correct me if I am
wrong.
------
Software used:
tomcat 4.1.12, axis 1.0, sun jdk 1.4.1_01-b01, linux
I have an RPC-style service, the required JAR myservice.jar is
located in axis/WEB-INF/lib. This has been working without any
problems for months.
I needed some of the classes in another context so I moved the JAR
from axis/WEB-INF/lib to shared/lib (as the tomcat documentation
tells me to).
Now when I access axis/servlet/AxisServlet an empty page is returned
(and calling the service results in the same error as listed below).
localhost_log contains the following message:
++++++++++++++++++++++++++++++
2002-11-14 14:15:30 StandardWrapperValve[AxisServlet]:
Servlet.service() for servlet AxisServlet threw exception
javax.servlet.ServletException: Servlet execution threw an exception
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:260)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at
org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2396)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at
org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at
org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:405)
at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:380)
at
org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:508)
at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:533)
at java.lang.Thread.run(Thread.java:536)
----- Root Cause -----
java.lang.NoClassDefFoundError: javax/xml/rpc/server/ServiceLifecycle
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:502)
at
java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:250)
at java.net.URLClassLoader.access$100(URLClassLoader.java:54)
at java.net.URLClassLoader$1.run(URLClassLoader.java:193)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:186)
at
org.apache.catalina.loader.StandardClassLoader.findClass(StandardClassLoader.java:621)
at
org.apache.catalina.loader.StandardClassLoader.loadClass(StandardClassLoader.java:958)
at
org.apache.catalina.loader.StandardClassLoader.loadClass(StandardClassLoader.java:857)
at
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1414)
at
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1274)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:315)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:217)
at org.apache.axis.utils.ClassUtils$2.run(ClassUtils.java:187)
at java.security.AccessController.doPrivileged(Native Method)
at org.apache.axis.utils.ClassUtils.loadClass(ClassUtils.java:171)
at org.apache.axis.utils.ClassUtils.forName(ClassUtils.java:154)
at
org.apache.axis.utils.cache.ClassCache.lookup(ClassCache.java:122)
at
org.apache.axis.providers.java.JavaProvider.getServiceClass(JavaProvider.java:502)
at
org.apache.axis.providers.java.JavaProvider.initServiceDesc(JavaProvider.java:535)
at
org.apache.axis.handlers.soap.SOAPService.getInitializedServiceDesc(SOAPService.java:322)
at
org.apache.axis.deployment.wsdd.WSDDService.makeNewInstance(WSDDService.java:477)
at
org.apache.axis.deployment.wsdd.WSDDDeployment.getDeployedServices(WSDDDeployment.java:566)
at
org.apache.axis.configuration.FileProvider.getDeployedServices(FileProvider.java:322)
at
org.apache.axis.transport.http.AxisServlet.reportAvailableServices(AxisServlet.java:584)
at
org.apache.axis.transport.http.AxisServlet.doGet(AxisServlet.java:256)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
at
org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:335)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:260)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at
org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2396)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at
org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at
org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:405)
at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:380)
at
org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:508)
at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:533)
at java.lang.Thread.run(Thread.java:536)
++++++++++++++++++++++++++++++
Of course, jaxrpc.jar has been present all the time. When I move my
myservice.jar back to axis/WEB-INF/lib the error is gone and the
services are listed correctly.
So two questions are raised:
1) Why can't I access classes placed into shared/lib from the axis
context. Is this a tomcat problem (I have found nothing appropriate
in the archives)?
2) If the service classes are not found why isn't this reported
correctly?
This is *VERY* maddening, actually. It to me two work days just to
figure out that I had to move my jar back to WEB-INF/lib, as the
error message does not mention my service class files. (I spent
hours after hours shifting around jaxrpc.jar, downloading older
JDKs, etc.)
Can anyone reproduce this (any JAR file with a service class should
be sufficient, if not I will provide a test case)?
Thanks in advance for your advice.
Best regards!
--
Matthias Brunner <mb...@blumenstrasse.vol.at>
PGP FP 7862 32B3 3B75 292A F76F 5042 8587 21AB 5B89 D501
Check out http://blumenstrasse.vol.at/~mb/gpgkey.asc
Re: Class loader madness and useless error reporting
Posted by Matthias Brunner <mb...@blumenstrasse.vol.at>.
On Thursday 14 November 2002 16:02, Steve Loughran wrote:
> Likely cause is the shared jar needs access to classes in
> axis.jar, which is in the 'lower' classloader and hence invisible.
> Move axis and needed jars up, perhaps
Thanks, you are right. Did I mention that I loathe this class loading
concept? :-)
--
Matthias Brunner <mb...@blumenstrasse.vol.at>
PGP FP 7862 32B3 3B75 292A F76F 5042 8587 21AB 5B89 D501
Check out http://blumenstrasse.vol.at/~mb/gpgkey.asc
Re: Class loader madness and useless error reporting
Posted by Steve Loughran <st...@iseran.com>.
----- Original Message -----
From: "Matthias Brunner" <mb...@blumenstrasse.vol.at>
To: <ax...@xml.apache.org>
Sent: Thursday, November 14, 2002 05:43
Subject: Class loader madness and useless error reporting
Hello,
I do not know whether this is a bug in tomcat or axis or both (in
fact, I do not even know if it is it a bug at all or it is me how is
dumb).
But for now I will only report it here please correct me if I am
wrong.
------
Software used:
tomcat 4.1.12, axis 1.0, sun jdk 1.4.1_01-b01, linux
I have an RPC-style service, the required JAR myservice.jar is
located in axis/WEB-INF/lib. This has been working without any
problems for months.
I needed some of the classes in another context so I moved the JAR
from axis/WEB-INF/lib to shared/lib (as the tomcat documentation
tells me to).
Now when I access axis/servlet/AxisServlet an empty page is returned
(and calling the service results in the same error as listed below).
localhost_log contains the following message:
---------------
Likely cause is the shared jar needs access to classes in axis.jar, which is
in the 'lower' classloader and hence invisible. Move axis and needed jars
up, perhaps