Eclipse用SOAP实现Web Service

来源:互联网 发布:免费铺砖软件 编辑:程序博客网 时间:2024/06/06 06:54

Eclipse用SOAP实现Web Service

本文基于Eclipse JEE用SOAP实现Web Service,所用服务器为Tomcat 9

  • 1. 构建Web Service的服务器端
  • 2. 构建客户端测试Web Service

本文以四则运算器Calculator的Service为例。

1. 构建Web Service的服务器端

  • 1)创建一个名为“CalculatorSOAP”的Dynamic Web Project

这里写图片描述

点击Next, 出现如下窗口,然后输入项目名称“CalculatorSOAP”并指定项目路径:

这里写图片描述

这里不要直接点击Finish,而要点击Next,因为要再最后一步勾选“生成web.xml文件”的选项,这个文件后面会用到。

这里写图片描述

点击Next,然后勾选“Generate web.xml delpoyment descriptor”:

这里写图片描述

点击Finish, 服务器端的项目创建完成。

这里写图片描述

  • 2)编写Web Service所要提供的功能的代码

在src中创建一个名为“mypackage ”的包,并在包中创建一个名为“Calculator”的类,Calculator.java中的代码如下:

//Calculator.java

package mypackage;public class Calculator {    public double add(double x, double y){        return x + y;    }    public double sub(double x, double y){        return x - y;    }    public double mul(double x, double y){        return x * y;    }    public double div(double x, double y){        return x / y;    }}

写完后记得“ctrl+s”保存一下,否则后面会出错。

  • 3)将该项目搭建成Web Service

在项目名上右键->New->Web Service(列表中没有的话选择Other…然后去搜索):

这里写图片描述

点击Next,出现如下窗口,我们主要配置如下两个标红的地方:

这里写图片描述

对于“Service implementation”部分,点击Browse按钮,选择上面所写的“Calculator”那个类:

这里写图片描述

对于“Configuration”部分,“Server runtime”选择Tomcat v9.0 Server, “Web service runtime” 选择Apache Axis:

这里写图片描述

这些都配置完后,点击Next:

这里写图片描述

确保“Methods”中的方法都已经勾选,然后点击Next:

这里写图片描述

点击Start server,这是为了启动Tomcat 9服务器,服务器成功启动后点击Next:

这里写图片描述

出现这个结果就代表Web Service已经配置好,点击Finish即可。

此时的目录结构如下:

这里写图片描述

对比之前的文件目录中会发现,在“WebContent/WEB-INF”中多了很多与Web Service相关的文件,lib目录之前是空的,现在也自动添加了很多jar包,而且“web.xml”中也自动填充了很多内容,此时的“web.xml”文件内容如下:

//web.xml

<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1">  <display-name>CalculatorSOAP</display-name>  <welcome-file-list>    <welcome-file>index.html</welcome-file>    <welcome-file>index.htm</welcome-file>    <welcome-file>index.jsp</welcome-file>    <welcome-file>default.html</welcome-file>    <welcome-file>default.htm</welcome-file>    <welcome-file>default.jsp</welcome-file>  </welcome-file-list>  <servlet>    <display-name>Apache-Axis Servlet</display-name>    <servlet-name>AxisServlet</servlet-name>    <servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class>  </servlet>  <servlet-mapping>    <servlet-name>AxisServlet</servlet-name>    <url-pattern>/servlet/AxisServlet</url-pattern>  </servlet-mapping>  <servlet-mapping>    <servlet-name>AxisServlet</servlet-name>    <url-pattern>*.jws</url-pattern>  </servlet-mapping>  <servlet-mapping>    <servlet-name>AxisServlet</servlet-name>    <url-pattern>/services/*</url-pattern>  </servlet-mapping>  <servlet>    <display-name>Axis Admin Servlet</display-name>    <servlet-name>AdminServlet</servlet-name>    <servlet-class>org.apache.axis.transport.http.AdminServlet</servlet-class>    <load-on-startup>100</load-on-startup>  </servlet>  <servlet-mapping>    <servlet-name>AdminServlet</servlet-name>    <url-pattern>/servlet/AdminServlet</url-pattern>  </servlet-mapping></web-app>
  • 4)在浏览器中测试

点击“Run->web service explorer”或者直接打开浏览器输入:http://127.0.0.1:51384/wse/wsexplorer/wsexplorer.jsp?org.eclipse.wst.ws.explorer=0:

这里写图片描述

点击右上角倒数第二个按钮(图中标红的按钮):

这里写图片描述

点击左边的“WSDL Main”,就会出现输入WSDL URL的编辑框。WSDL URL可以在刚才生成的“WebContent/WEB-INF/wsdl”目录中的Calculator.wsdl文件的结尾处找到

这里写图片描述

在这里输入时,还需要在URL的结尾处加上“?wsdl”,所以完整的WSDL URL为:http://localhost:8080/CalculatorSOAP/services/Calculator?wsdl
其实,WSDL URL的通用写法为:

http://localhost:8080/项目名/services/类名?wsdl

这里写图片描述

点击Go即可进入:

这里写图片描述

在Operations处就会出现我们刚才在Calculator这个类中所写的四个方法,随便点击个方法进行测试,比如点击“add”:

这里写图片描述

计算35.4+27.9就可得到结果63.3。

2. 构建客户端测试Web Service

客户端测试过程中服务器端的Tomcat要保持全程开启状态!!!!!!

  • 1)创建一个名为“TestCalculatorSOAP”的Java Project

这里写图片描述

点击Next, 出现如下窗口,然后输入项目名称“TestCalculatorSOAP”并指定项目路径:

这里写图片描述

点击Next:

这里写图片描述

点击Finish, 服务器端的项目创建完成。

这里写图片描述

  • 2)将该项目搭建成Web Service Client

在项目名上右键->New->Web Service Client(列表中没有的话选择Other…然后去搜索):

这里写图片描述

点击Next,出现如下窗口,我们主要配置如下两个标红的地方:

这里写图片描述

对于“Service implementation”部分,点击Browse按钮,选择刚才在CalculatorSOAP项目中生成的Calculator.wsdl文件:

这里写图片描述

对于“Configuration”部分,配置与服务器端完全相同,默认即可。

这些都配置完后,点击Next:

这里写图片描述

出现这个结果就代表Web Service Client已经配置好,点击Finish即可。

此时的目录结构如下:

这里写图片描述

对比之前的文件目录中会发现,在src目录中自动生成了mypackage的包和很多java文件,我们只需写一个main函数来调用这些java文件即可完成测试。

  • 3)写main函数进行测试

在src的mypakcage包中创建一个名为“Main”的类,该类中的内容如下:

//Main.java

package mypackage;import java.rmi.RemoteException;import java.util.Scanner;public class Main {    public static void main(String args[]) {        System.out.println("SOAP方式的Calculator Web Service:");        CalculatorProxy proxy = new CalculatorProxy();        Scanner input = new Scanner(System.in);        System.out.println("请输入运算符(+,-,*,/): ");        String operator = input.nextLine();        System.out.println("x = ");        double x = input.nextDouble();        System.out.println("y = ");        double y = input.nextDouble();        double result = 0;        try {            if(operator.equals("+"))            result = proxy.add(x, y);            if(operator.equals("-"))                result = proxy.sub(x, y);            if(operator.equals("*"))                result = proxy.mul(x, y);            if(operator.equals("/"))                result = proxy.div(x, y);        } catch (RemoteException e) {            e.printStackTrace();        }        System.out.println("Output from SOAP Server ......");        System.out.println("运算结果 = "+ result);    }}

写完后记得“ctrl+s”保存一下,否则后面会出错。

在Main.java上右键->Run as->Java Application,运行以后,可能会出现如下警告:

这里写图片描述

解决办法:导入javax.activation和javax.mail的jar包。

javax.activation的jar包下载地址:http://www.java2s.com/Code/Jar/j/Downloadjavaxactivationjar.htm

javax.mail的jar包下载地址:http://www.java2s.com/Code/Jar/j/Downloadjavamail144jar.htm

在“TestCalculatorSOAP”的项目根目录下创建一个文件夹叫“lib”,然后将下载的两个jar包放到这个文件夹下:

这里写图片描述

回到Eclipse中,在项目名上右键->Refresh,然后再次右键->Build Path->Configure Build Path->Libraries->Add JARs,将刚才那两个jar包添加进去:

这里写图片描述

然后点击Apply->OK,再次运行就不会有这个错误了。用户分别输入运算符,x和y的值,就可得出计算结果:

这里写图片描述