That is the problem. When I put the byte code in $CATALINA_HOME/common/classes, I get the same error you are seeing:
Ouch, the call failed: Fault Code = SOAP-ENV:Server Fault String = Exception while handling service request: org/apache/soap/rpc/SOAPContext I bet that Tomcat uses a different class loader for code loaded from common, one that does not have the various webapps directories among those to search. Scott ----- Original Message ----- From: "Scott Nichol" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Monday, April 22, 2002 14:19 Subject: Fw: using SOAPContext as first argument in RPC SOAP messages class notworking > I quickly set up my notebook (downloaded soap 2.2 and tomcat 4.0.3) to run > the bytecode you sent. My notebook is Windows 98 and JDK 1.3.1. Your byte > code works fine for me. The only thing I do that sounds different is that I > do not copy HellowWorldService.class to $CATALINA_HOME/common/classes. I > copy it to $CATALINA_HOME/webapps/soap/WEB-INF/classes; > $CATALINA_HOME/webapps/soap is the directory into which I un-jar soap.war. > I'll give it a quick whirl using your method. > > Scott > > ----- Original Message ----- > From: "Andrew Trieger" <[EMAIL PROTECTED]> > To: <[EMAIL PROTECTED]> > Sent: Monday, April 22, 2002 13:15 > Subject: Re: using SOAPContext as first argument in RPC SOAP messages class > notworking > > > > sure, i'm sending this just to you since the list probably doesnt want to > see bytecode... > > Drew > > > > Scott Nichol wrote: > > > > Andrew, > > Could you send me byte code for the service, i.e. > HelloWorldService.class? > > If you can, I'll run it from my rig at home tonight to see how it works > for > > me. > > > > Scott > > > > ----- Original Message ----- > > From: "Andrew Trieger" <[EMAIL PROTECTED]> > > To: <[EMAIL PROTECTED]> > > Sent: Monday, April 22, 2002 12:48 > > Subject: Re: using SOAPContext as first argument in RPC SOAP messages > class > > notworking > > > > > Scott, > > > OK. I now reproduced the error on my win2k (professional) box as > > well. To reiterate from the previous email response from me, I took > your > > server class, put it in tomcat/classes and compiled it on my OSX box > (java > > 1.3.1_02, soap2.2, tomcat 4.0.1). > > > I deployed the service using the /soap/admin gui with the same > names, > > parameters as is listed below. > > > I created the class for the client cut/paste from below (was > missing a > > "("'s, but fixed that) into a separate directory on this same box, > compiled > > it, ran it. > > > > > > Got the same error. > > > > > > Copied the tomcat server to my win2k box where java 1.3.1_02 JRE > from > > javasoft already is installed. ran tomcat without recompiles or > > redeployments, started ok. > > > > > > used the same client back on the OSX box to message the helloworld > > service on the win2k box and got the same error. > > > > > > > > > ????? > > > > > > Drew > > > > > > > > > > > > Scott Nichol wrote: > > > > > > Drew, > > > I thought that maybe if you had a bad definition for > HttpServletRequest > > that the > > > JIT might throw an exception when it compiles the method. > > > > > > Anyway, I wrote the following service and client and was able to > > successfully > > > run it. My environment is Win2k, JDK 1.3.1, SOAP 2.2, Tomcat 4.0.1. > If > > you > > > cannot get it to run, I could send you my bytecode to test. > > > > > > Scott > > > > > > import javax.servlet.http.*; > > > public class HelloWorldService { > > > public String hello(org.apache.soap.rpc.SOAPContext ctx) { > > > HttpServletRequest req = > > > > > > (HttpServletRequest)ctx.getProperty(org.apache.soap.Constants.BAG_HTTPSERVLE > > TREQ > > > UEST); > > > return req != null ? req.getQueryString() : "null"; > > > } > > > } > > > > > > <isd:service xmlns:isd="http://xml.apache.org/xml-soap/deployment" > > > id="urn:helloworld"> > > > <isd:provider type="java" > > > scope="Application" > > > methods="hello"> > > > <isd:java class="HelloWorldService"/> > > > </isd:provider> > > > > > > <isd:faultListener>org.apache.soap.server.DOMFaultListener</isd:faultListene > > r> > > > </isd:service> > > > > > > import java.net.*; > > > import java.util.*; > > > import org.apache.soap.*; > > > import org.apache.soap.rpc.*; > > > > > > public class HelloWorldClient { > > > public static void main(String[] args) throws Exception { > > > if (args.length != 1 > > > && (args.length != 2 || !args[0].startsWith ("-"))) { > > > System.err.println ("Usage: java " + > > HelloWorldClient.class.getName () + > > > " [-encodingStyleURI] SOAP-router-URL"); > > > System.exit (1); > > > } > > > > > > // Process the arguments. > > > int offset = 2 - args.length; > > > String encodingStyleURI = args.length == 2 > > > ? args[0].substring(1) > > > : Constants.NS_URI_SOAP_ENC; > > > URL url = new URL (args[1 - offset]); > > > > > > // Build the call. > > > Call call = new Call (); > > > call.setTargetObjectURI ("urn:helloworld"); > > > call.setMethodName ("hello"); > > > call.setEncodingStyleURI(encodingStyleURI); > > > Vector params = new Vector (); > > > Response resp = call.invoke url, "" ); > > > > > > // Check the response. > > > if (resp.generatedFault ()) { > > > Fault fault = resp.getFault (); > > > System.out.println ("Ouch, the call failed: "); > > > System.out.println (" Fault Code = " + fault.getFaultCode > ()); > > > System.out.println (" Fault String = " + > fault.getFaultString > > ()); > > > } else { > > > Parameter result = resp.getReturnValue (); > > > System.out.println (result.getValue ()); > > > } > > > } > > > } > > > > > > ----- Original Message ----- > > > From: "Andrew Trieger" <[EMAIL PROTECTED]> > > > To: <[EMAIL PROTECTED]> > > > Sent: Friday, April 19, 2002 1:20 PM > > > Subject: Re: using SOAPContext as first argument in RPC SOAP > messages > > class not > > > working > > > > > > > Good idea, but I *think* its not even executing my method as my > first > > > > line println isnt coming out, so I'm screwed, but i might be able > to > > > > subclass rpcrouter servlet, use mine instead of theirs, catch > > throwable > > > > and dump any info to stderr... > > > > > > > > Any idea if defining my own custom fault-handler would be helpful? > > I'm > > > > not sure how that would help, but possibly it would be called by > the > > > > local soap stuff and given more error message info than is > returned in > > > > the soap response? eh... long shot. > > > > > > > > I might just have to call this feature "Too new to work" and wait > 6mos > > > > and get along without it. I could define a different soap router > url > > > > for EVERY method and then control access in iplanet... hassle. > > > > > > > > Drew > > > > > > > > > > -- > > > --- > > > > > > > > > > -- > > --- > > > > > > > -------------------------------------------------------------------------- -- > ---- > > > > import javax.servlet.http.*; > > > > public class HelloWorldService { > > public String hello(org.apache.soap.rpc.SOAPContext ctx) { > > HttpServletRequest req = > > > (HttpServletRequest)ctx.getProperty(org.apache.soap.Constants.BAG_HTTPSERVLE > TREQUEST); > > return req != null ? req.getQueryString() : "null"; > > } > > } > > > >