百度百科中给出的 Web Service 的定义为,是一个平台独立的,低耦合的,自包含的、基于可编程的 web 的应用程序,可使用开放的 XML(标准通用标记语言下的一个子集)标准来描述、发布、发现、协调和配置这些应用程序,用于开发分布式的互操作的应用程序。

那么为什么要用 Web Service 呢,用它的好处是什么了?有网友总结以下几点:


第一个是安全。客户端只需要知道 Web Service 在哪里,而不会暴露数据库服务器的地址、用户名密码等机密信息。

第二个还是安全。核心的业务逻辑放在服务端,即便本地的软件被反编译,最值钱的核心算法还是拿不到。

第三就是维护方便。比如有个业务的算法有更动,只要函数名和参数、返回值不变,内部算法的变更不影响客户端。

第四是在大型项目中易于团队合作,提高开发效率。


那怎么实现并运用 Web Service 呢?下面就主要写一下最简单的实现过程。

首先保证本地已经配置好了 Java 运行环境(1.6 以上版本),设置了 JAVA_HOME 环境变量。

创建服务端 Java Web 项目

创建一个Java Web 项目 WS_Server 作为服务器端,如图所示。

Web Service 最简实现和测试_服务端

创建服务端测试类

在 src 目录:右键 =》New =》Class,填写信息如图所示。

Web Service 最简实现和测试_web service_02

服务端测试类代码

在生成的 ServiceTest.java 中,编写如下代码。

package com.mll.webservice.service;
import javax.jws.WebService;
import javax.xml.ws.Endpoint;
@WebService
public class ServiceTest {
/**
* 供客户端调用的方法
* @param s 传入参数
* @return 返回结果
*/
public String testWS(String s) {
return "Test ===>>> " + s;
}
/**
* 用户发布服务端
* 参数一:服务端地址,端口可以任意写,但要求没有被占用
* 参数二:new 类名
*/
public static void main(String[] args) {
Endpoint.publish("http://localhost:8989/Service/ServiceTest", new ServiceTest());
System.out.println("Success...");
}
}

启动服务端

在 ServiceTest.java 上右键 =》 Run As =》Java Application,如果再输出中看到“Success…”则说明服务端启动成功。

测试服务端

打开浏览器,输入 ​​http://localhost:8989/Service/ServiceTest?wsdl​​,如果如下图所示,则说明服务端启动成功。

Web Service 最简实现和测试_客户端_03

创建客户端 Java Web 项目

创建一个Java Web 项目 WS_Clinet 作为客户端,如图所示。

Web Service 最简实现和测试_测试_04

执行命令

打开 DOS 窗口,运行下面命令。


wsimport -s D:\MyEclipse\Workspace\WS_Client\src -p com.mll.webservice.client -keep ​​http://localhost:8989/Service/ServiceTest?wsdl​


查看命令结果

出现下图所示,则说明命令执行成功。

Web Service 最简实现和测试_客户端_05

查看客户端项目目录结构

右键刷新 WS_Clinet 项目的 src 文件夹,则出现如图所示的代码结构。

Web Service 最简实现和测试_java_06

创建客户端测试类

在客户端编写测试类,测试服务器端的 testWS 方法。在 WS_Clinet 项目的 src 文件夹右键 =》New =》Class,填写信息如图所示。

Web Service 最简实现和测试_服务端_07

客户端测试类代码

在生成的 TestClient.java 中,编写如下代码。

package com.mll.webservice.test;
import com.mll.webservice.client.ServiceTest;
import com.mll.webservice.client.ServiceTestService;
public class ClientTest {
/**
* @param args
*/
public static void main(String[] args) {
ServiceTest sTest = new ServiceTestService().getServiceTestPort();
String s = sTest.testWS("Web Service!");
System.out.println(s);
}
}

运行测试类。

在 TestClient.java 上右键 =》 Run As =》Java Application,如果在输出中看到“Test ===>>> Web Service!”,则说明调用服务端的公用类成功。