tomcat8.0+soap-2.3.1简单实例

    xiaoxiao2021-11-08  77

    参考: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.运行客户端代码,返回结果

    转载请注明原文地址: https://ju.6miu.com/read-678123.html

    最新回复(0)