tomcat8.0+soap-2.3.1简单实例

参考:http://www.tuicool.com/articles/I32qya

~~~~框架搭建~~~~~~~

1.web容器方面我使用的是tomcat8.0,可直接到apache tomcat页面进行下载,其他所需文件


2.解压后把soap里的soap.jar文件,jaf里的activation.jar文件,javamail里的mail.jar文件,以及xerces-2.11.0中的5个jar文件(如图)放到tomcat的lib文件夹下


3.这里还使用到jdk/lib的tools.jar,也要放到tomcat的lib下,我使用的jdk版本是1.8,接下来需要将soap文件夹下的soap.war文件放到tomcat的webapp里,其作用是启动tomcat

后可以进行页面访问部署到soap上的服务


4.设置环境变量,在系统变量中设置TOMCAT_HOME(对应其安装地址),如D:\work-app\tomcat8\apache-tomcat-8.0.35,下面是lib等目录,然后设置CLASSPATH,对应刚刚

在tomcat的lib下添加的jar文件,我的是

%JAVA_HOME%\lib\tools.jar;

%TOMCAT_HOME%/lib/soap.jar;

%TOMCAT_HOME%/lib/mail.jar;

%TOMCAT_HOME%/lib/activation.jar;

%TOMCAT_HOME%/lib/xercesImpl.jar;

%TOMCAT_HOME%/lib/xercesSamples.jar;

%TOMCAT_HOME%/lib/xml-apis.jar;

tools.jar的地址也可以写复制到tomcat下的地址%TOMCAT_HOME%\lib\tools.jar;

启动tomcat,到bin目录下启动dos输入startup



~~~~~服务发布~~~~~


一般写web程序先要想好服务功能,即构建服务端业务逻辑后再写客户端代码


新建一个普通的java工程SoapLearning

新建ParaClient类以及ParaService,结构如图(注意包路径)


1.服务端代码

package cn.edu.firstsoap;

public class ParaService {
public String getMessage() {
return "Hello World!";

}

public String getMessage(String str) {

return "Hello World! " + str;

}

public String getMessage(String str1, String str2) {

return "Hello World! " + str1 + "&" + str2;

}


}

2.客户端代码

package cn.edu.firstsoap;
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 ParaClient {


public static void main(String[] args) throws Exception{
// TODO Auto-generated method stub

String endPoint = "http://localhost:8080/soap/servlet/rpcrouter";
Call call = new Call();
call.setTargetObjectURI("urn:ParaService");
call.setMethodName("getMessage");
call.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC);

Vector params = new Vector();

Parameter p1 = new Parameter("name",String.class,"fgao",null);
Parameter p2 = new Parameter("name2",String.class,"fangao",null);

params.addElement(p1);
        params.addElement(p2);
        
        call.setParams(params);
        
        URL url = new URL(endPoint);
        
        Response resp = call.invoke(url, "");
        if (resp.generatedFault()) {

        Fault fault = resp.getFault();

        System.out.println("The Following Error Occured: ");

        System.out.println("  Fault Code = " + fault.getFaultCode());

        System.out.println("  Fault String =" + fault.getFaultString());

        } else {
        Parameter result = resp.getReturnValue();
        System.out.println(result.getValue());
       
        }              

}
}

3.通过xml注册服务,新建一个Config-xml文件,新建HelloWorld-para.xml文件,写入

<?xml version="1.0" encoding="UTF-8"?>
<isd:service xmlns:isd="http://xml.apache.org/xml-soap/deployment" id="urn:ParaService">


<isd:provider type="java" scope="Request" methods="getMessage">


<isd:java class="cn.edu.firstsoap.ParaService" static="false"/>


</isd:provider>


</isd:service>


4. 把bin文件夹下的ParaService.class文件放到tomcat/webapps/soap/WEB-INF的class文件夹下,需要注意的是一定要在该文件下建立对应的包路径再放入ParaService.class,如图。我看其他文章说可以打包成jar文件放到tomcat的lib下,但我尝试后失败



5.重启tomcat,restart


6.在.xml文件夹处打开Dos,执行以下命令正式发布服务

java  org.apache.soap.server.ServiceManagerClient http://127.0.0.1:8080/soap/servlet/rpcrouter  deploy  HelloWorld-para.xml

执行以下命令查看发布的服务清单

java org.apache.soap.server.ServiceManagerClient http://127.0.0.1:8080/soap/servlet/rpcrouter list

取消发布

java org.apache.soap.server.ServiceManagerClient http://127.0.0.1:8080/soap/servlet/rpcrouter undelpoy "urn:ParaService"


7.可以登录Http://localhost:8080/soap进行查看发布的服务


8.运行客户端代码,返回结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值