Apache SOAP的Web Services在Tomcat上的初体验:安装和测试下载:
Apache SOAP http://xml.apache.org/soap/index.html
Tomcat http://jakarta.apache.org/1、解压Apache SOAP到%ApacheSOAP%,如:F:\OpenSource\SOAP2、安装Tomcat到%Tomcat%,如:F:\Program Files\Apache Group\Tomcat3、复制%ApacheSOAP%\webapps\soap.war文件到%Tomcat%\webapps目录下4、启动Tomcat,此时Tomcat自动将soap.war解压了5、在%Tomcat%\webapps\soap\WEB-INF\classes建立测试文件HelloSOAPClient.java、HelloSOAP.java,源码附后6、编译,进入%Tomcat%\webapps\soap\WEB-INF\classes目录
javac -classpath .;%classpath%;F:\OpenSource\SOAP\lib\soap.jar *.java7、SOAP服务的发布
使用IE浏览器浏览http://localhost:8080/soap/admin/index.html,进入Deploy,填写如下信息:
ID: urn:hello.hellosoap
Scope: Request
Methods getWelcomeValue
Provider Type: Java
Java Provider Provider Class:  HelloSOAP
Java Provider Static: NO
确认发布,可以点List查看已发布服务
Service Listing
Here are the deployed services (select one to see details)urn:hello.hellosoap8、运行,java -classpath .;%classpath%;F:\OpenSource\SOAP\lib\soap.jar HelloSOAPClient
可以看到返回值信息如下:
SOAP调用测试开始
Name:俞黎敏
Result:欢迎光临SOAP:俞黎敏
SOAP调用测试结束则证明配置和测试成功,以后就可以发布自己的SOAP服务了!9、删除服务Un-deploy之即可
Un-Deploy a Service
Select the service to be undeployed:urn:hello.hellosoap

解决方案 »

  1.   

    public class HelloSOAP
    {
        public String getWelcomeValue(String name)
        {
            String strResult = "欢迎光临SOAP:" + name;
            return strResult;
        }
    }
      

  2.   

    import java.net.URL;
    import java.util.Vector;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 HelloSOAPClient
    {
        public static void main(String[] args) throws Exception
        {
            System.out.println("SOAP调用测试开始");
            String name = "俞黎敏";
            HelloSOAPClient helloSOAPClient = new HelloSOAPClient();
            //调用远程的SOAP服务
            String resultValue = helloSOAPClient.doSOAPRequest("hello.hellosoap","getWelcomeValue","name",name);
            System.out.println("Name:" + name);
            System.out.println("Result:" + resultValue);
            System.out.println("SOAP调用测试结束");
        }    public String doSOAPRequest(String _strURI,String _strMethodName,String _strName,String _strValue) throws Exception
        {
            //创建一个远程调用
            Call call = new Call();
            //设置远程对象的URI
            call.setTargetObjectURI("urn:" + _strURI);
            //设置调用的方法名
            call.setMethodName(_strMethodName);
            //设置编码风格
            call.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC);
            //设置方法调用的参数
            Vector params = new Vector();
            params.addElement(new Parameter(_strName,String.class,_strValue,null));
            call.setParams(params);
            //发送RPC请求,请查看webapps\soap\web.xm,就知道rpcrouter是映射到org.apache.soap.server.http.RPCRouterServlet这个类
            Response resp = call.invoke(new URL("http://localhost:8080/soap/servlet/rpcrouter"),"");
            if(resp.generatedFault())
            {
                //远程调用出错处理
                Fault fault = resp.getFault();
                System.out.println("调用失败!");
                System.out.println("错误代号:" + fault.getFaultCode());
                System.out.println("错误信息:" + fault.getFaultString());
                return "调用失败!";
            }
            else
            {
                //调用成功,获取返回值
                Parameter result = resp.getReturnValue();
                return result.getValue().toString();
            }
        }
    }
      

  3.   

    我的classpath是 
    .;C:\j2sdk1.4.2_04\lib\tools.jar;C:\j2sdk1.4.2_04\lib\dt.jar;C:\j2sdk1.4.2_04\bin;C:\jmsn\lib\msnm.jar;%TOMCAT_HOME%\common\lib\soap.jar;%TOMCAT_HOME%\common\lib\mail.jar;%TOMCAT_HOME%\common\lib\activation.jar;%TOMCAT_HOME%\common\lib\xerces.jar; 为什么在编译的时候,编译器不去读取soap.jar,和mail.jar等等,我把他们解压后放在classes编译一次系统会自动删除一些class,为什么?希望高手帮忙!
      

  4.   

    用什么编译?JB?javac不就可以了?怎么会删除?
      

  5.   

    十分感谢 YuLimin(阿敏总司令:人,是要靠自己的!简单就是美!)