I am experimenting with writing my own fault handler.  I have a simple
HelloWorld service with a method that throws an exception.  I created a
class called MyFaultListener which implements SOAPFaultListener.  For now,
the fault() method code is identical to that in DOMFaultListener.

If I deploy the service with either of Apache's basic fault handlers
(DOMFaultListener or ExceptionFaultListener), it works fine.  If I deploy
with my fault handler, Tomcat throws the following exception:

java.lang.NoClassDefFoundError: org/apache/soap/server/SOAPFaultListener

It seems like a classpath problem, but why would it be able to find
SOAPFaultListener if the fault handler is DOMFaultListener but not
MyFaultListener?  They are identical except for the class name.  In fact, I
can deploy with all three fault handlers in the deployment descriptor, and
it blows up only when trying to load MyFaultListener (I added debug code to
SOAPContext.java).

I am using Tomcat version 3.3-m3, and soap.jar is in TOMCAT_HOME\lib\apps
directory.

Any insight would be appreciated.
Thanks!


Here's the complete stack trace spit out by Tomcat:

2001-08-14 15:35:58 - Ctx(/soap) : Exception in R( /soap +
/servlet/rpcrouter + null) - java.lang.NoClassDefFoundError:
org/apache/soap/server/SOAPFaultListener
        at java.lang.ClassLoader.defineClass0(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java, Compiled
Code)
        at
java.security.SecureClassLoader.defineClass(SecureClassLoader.java, Compiled
Code)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java, Compiled
Code)
        at java.net.URLClassLoader.access$1(URLClassLoader.java, Compiled
Code)
        at java.net.URLClassLoader$1.run(URLClassLoader.java, Compiled Code)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java, Compiled
Code)
        at java.lang.ClassLoader.loadClass(ClassLoader.java, Compiled Code)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java,
Compiled Code)
        at java.lang.ClassLoader.loadClass(ClassLoader.java, Compiled Code)
        at java.net.FactoryURLClassLoader.loadClass(URLClassLoader.java,
Compiled Code)
        at java.lang.ClassLoader.loadClass(ClassLoader.java, Compiled Code)
        at java.net.FactoryURLClassLoader.loadClass(URLClassLoader.java,
Compiled Code)
        at java.lang.ClassLoader.loadClass(ClassLoader.java, Compiled Code)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java,
Compiled Code)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:199)
        at org.apache.soap.rpc.SOAPContext.loadClass(SOAPContext.java:564)
        at
org.apache.soap.server.DeploymentDescriptor.buildFaultRouter(DeploymentDescr
iptor.java, Compiled Code)
        at
org.apache.soap.server.http.RPCRouterServlet.doPost(RPCRouterServlet.java,
Compiled Code)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java)
        at
org.apache.tomcat.facade.ServletHandler.doService(ServletHandler.java:500)
        at org.apache.tomcat.core.Handler.service(Handler.java, Compiled
Code)
        at
org.apache.tomcat.facade.ServletHandler.service(ServletHandler.java:448)
        at
org.apache.tomcat.core.ContextManager.internalService(ContextManager.java,
Compiled Code)
        at
org.apache.tomcat.core.ContextManager.service(ContextManager.java, Compiled
Code)
        at
org.apache.tomcat.modules.server.Http10Interceptor.processConnection(Http10I
nterceptor.java:150)
        at
org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java,
Compiled Code)
        at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.jav
a, Compiled Code)
        at java.lang.Thread.run(Thread.java:479)


Reply via email to