Hi,

I have just downloaded Apache-SOAP v2.2 and Tomcat v3.2. and follow an
article in Javaworld to verify SOAP implementation. Based upon the article,
2 programs have been developed, one for web service name "HelloServer.java"
and the other is a client program named "Client". After the web service has
been deployed and execute the client program, it always return error as
following :

 Fault Code = SOAP-ENV:Server.Exception:
 Fault String = java.lang.NullPointerException

and the client program as 
import java.net.URL;
import java.util.Vector;
import org.apache.soap.SOAPException;
import org.apache.soap.Constants;
import org.apache.soap.Fault;
import org.apache.soap.rpc.Call;
import org.apache.soap.rpc.Parameter;
import org.apache.soap.rpc.Response;

public class Client {

        public static void main(String[] args) {
        
                if (args.length == 0) {
                        System.err.println("Usage : java hello.client
[SOAP-router-URL ");
                        System.exit(1);
                }
                
                try {
                        URL ur = null;
                        String name = null;
                        if (args.length == 2) {
                                ur = new URL(args[0]);
                                name = args[1];
                        }
                        else {
                                ur = new
URL("http://localhost:8080/apache-soap/servlet/rpcrouter";);
                                name = args[0];
                        }
                        
                        Call call = new Call();
                        call.setTargetObjectURI("urn:hello");
                        call.setMethodName("sayHelloTo");
                        call.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC);
                        Vector params = new Vector();
                        params.addElement(new Parameter("name",
String.class, name, null));
                        call.setParams(params);
                        
                        Response resp = null;
                        try {
                                System.out.println("invoke service\n" + "URL
= " + ur + "\n");
                                resp = call.invoke(ur, "");
                        }
                        catch (SOAPException e ) {
                                System.err.println("Caught SOAPException ("
+ e.getFaultCode() + "): " + e.getMessage());
                                System.exit(-1);
                        }
                        
                        if (!resp.generatedFault()) {
                                Parameter ret = resp.getReturnValue();
                                Object value = ret.getValue();
                                System.out.println(value);
                        }
                        else {
                                Fault fault = resp.getFault();
                                System.err.println("Generated fault ");
                                System.err.println(" Fault Code = " +
fault.getFaultCode());
                                System.err.println(" Fault String = " +
fault.getFaultString());
                        }
                } catch (Exception e) {
                        e.printStackTrace();
                }
                
        }
}

and the client program as 
public class HelloServer {

        public String sayHelloTo(String name) {
                System.out.println("sayHelloTo(String name)");
                return "Hello " + name + ", How are you doing ?";
        }
}

and the Tomcat classpath as follow
c:\xerces-1_3_0\xerces.jar;c:\soap-2_2\lib\soap.jar;c:\my
documents\myjava\mysoap;C:\jakarta-tomcat-3.2.2\classes;C:\jakarta-tomcat-3.
2.2\lib\cocoon.jar;C:\jakarta-tomcat-3.2.2\lib\xerces_1_2.jar;C:\jakarta-tom
cat-3.2.2\lib\stylebook-1.0-b2.jar;C:\jakarta-tomcat-3.2.2\lib\turbine-pool.
jar;C:\jakarta-tomcat-3.2.2\lib\xlan_1_2_D02.jar;C:\jakarta-tomcat-3.2.2\lib
\fop_0_15_0.jar;C:\soap-2_2\lib\soap.jar;C:\jakarta-tomcat-3.2.2\lib\w3c.jar
;C:\jakarta-tomcat-3.2.2\lib\ant.jar;C:\jakarta-tomcat-3.2.2\lib\cocoon.jar;
C:\jakarta-tomcat-3.2.2\lib\fop_0_15_0.jar;C:\jakarta-tomcat-3.2.2\lib\jaspe
r.jar;C:\jakarta-tomcat-3.2.2\lib\jaxp.jar;C:\jakarta-tomcat-3.2.2\lib\parse
r.jar;C:\jakarta-tomcat-3.2.2\lib\servlet.jar;C:\jakarta-tomcat-3.2.2\lib\st
ylebook-1.0-b2.jar;C:\jakarta-tomcat-3.2.2\lib\turbine-pool.jar;C:\jakarta-t
omcat-3.2.2\lib\webserver.jar;C:\jakarta-tomcat-3.2.2\lib\xalan_1_2_D02.jar;
C:\jakarta-tomcat-3.2.2\lib\xerces_1_2.jar;.;.;C:\PROGRA~1\JMF21~1.1\lib\sou
nd.jar;C:\PROGRA~1\JMF21~1.1\lib\jmf.jar;C:\WINNT\java\classes;C:\dbxml-core
\java\lib\dbXML.jar;.;c:\JDK1.3\lib\tools.jar 

and the configuration of web service deployment in Apache as following

id --> urn:Hello
Scope --> Request
Provider Type --> java
Provider Class --> HelloServer
Use static class --> false
Methods --> sayHelloTo

Can u suggest what I can do ? Thank a lot 

Regards,
Alex

Reply via email to