[prev in list] [next in list] [prev in thread] [next in thread] 

List:       axis-user
Subject:    NoClassDefFoundError writing simple handler
From:       Robert Mecklenburg <mecklen () realmsys ! com>
Date:       2004-04-30 15:19:47
Message-ID: m23c6lpk6k.fsf () oops ! realmsys ! com
[Download RAW message or body]

I'm a newbie to web services and axis and I'm trying to implement a
simple handler.  

1. The handler code is:

  public class LogHandler extends BasicHandler
  {
    public final void invoke(MessageContext msgContext) throws AxisFault
    {
      System.out.println("handler invoked!");
    }
  }

2. I modified my server-config.wsdd with:

  <handler name="loghandler" type="java:com.realmsys.mdms.server.key.LogHandler">
    <parameter name="wsdlURL" value="/axis/LogHandlerService-impl.wsdl"/>
    <parameter name="serviceName" value="LogHandlerService"/>
    <parameter name="namespace" value="http://com.realmsys.mdms/LogHandlerService-impl.wsdl"/>
    <parameter name="portName" value="Debug"/>
  </handler>

3. I added my new handler to my service:

  <service name="KeyManagerService" provider="java:RPC">

    <requestFlow>
      <handler type="loghandler"/>
    </requestFlow>

    <responseFlow>
      <handler type="loghandler"/>
    </responseFlow>

    <parameter name="allowedMethods" value="*"/>
    ...

4. When I deploy and run this configuration I get this message returned
   to the client app:

  AxisFault
   faultCode: {http://xml.apache.org/axis/}HTTP
   faultSubcode: 
   faultString: (500)Internal Server Error
   faultActor: 
   faultNode: 
   faultDetail: 
	  {}string: return code:  500

  Apache Tomcat/5.0.19 - Error report
  HTTP Status 500 - 
  type
  Exception report
  message
  description
  The server encountered an internal error () that prevented it from fulfilling this request.
  exception
  javax.servlet.ServletException: Servlet execution threw an exception
  root cause java.lang.NoClassDefFoundError: org/apache/axis/handlers/BasicHandler
	  java.lang.ClassLoader.defineClass0(Native Method)
	  java.lang.ClassLoader.defineClass(ClassLoader.java:537)
	  java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123)
	  java.net.URLClassLoader.defineClass(URLClassLoader.java:251)
	  java.net.URLClassLoader.access$100(URLClassLoader.java:55)
	  java.net.URLClassLoader$1.run(URLClassLoader.java:194)
	  java.security.AccessController.doPrivileged(Native Method)
	  java.net.URLClassLoader.findClass(URLClassLoader.java:187)
	  java.lang.ClassLoader.loadClass(ClassLoader.java:289)
	  sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:274)
	  java.lang.ClassLoader.loadClass(ClassLoader.java:235)
	  org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1296)
	  org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1230)
	  java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)
          ...

Without the <requestFlow>/<responseFlow> clauses my pivot service
appears to work fine.  It goes sour only with the new handler.  It
appears there is some kind of security issue since *clearly* the
axis.jar files are loaded and running (it is deep in axis code when
it throws the exception).

Any suggestions would be greatly appreciated!

Cheers,
Robert


P.S.  I've tried many permutations, of course, one which may be of
particular interest is that I replaced my service declaration in the
wsdd file with the simpler:

  <handler name="loghandler" type="java:com.realmsys.mdms.server.key.LogHandler"/>

as I saw several such short declarations in the default wsdd file.
The change did not cure the problem.
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic