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";
> > }
> > }
> >
>
>