百度百科中给出的 Web Service 的定义为,是一个平台独立的,低耦合的,自包含的、基于可编程的 web 的应用程序,可使用开放的 XML(标准通用标记语言下的一个子集)标准来描述、发布、发现、协调和配置这些应用程序,用于开发分布式的互操作的应用程序。
那么为什么要用 Web Service 呢,用它的好处是什么了?有网友总结以下几点:
第一个是安全。客户端只需要知道 Web Service 在哪里,而不会暴露数据库服务器的地址、用户名密码等机密信息。 第二个还是安全。核心的业务逻辑放在服务端,即便本地的软件被反编译,最值钱的核心算法还是拿不到。 第三就是维护方便。比如有个业务的算法有更动,只要函数名和参数、返回值不变,内部算法的变更不影响客户端。 第四是在大型项目中易于团队合作,提高开发效率。
那怎么实现并运用 Web Service 呢?下面就主要写一下最简单的实现过程。
首先保证本地已经配置好了 Java 运行环境(1.6 以上版本),设置了 JAVA_HOME 环境变量。
1. 创建一个Java Web 项目 WS_Server 作为服务器端,如图所示。
2. 在 src 目录:右键 =》New =》Class,填写信息如图所示。
3. 在生成的 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...");
- }
- }
4. 启动服务端。在 ServiceTest.java 上右键 =》 Run As =》Java Application,如果再输出中看到“Success...”则说明服务端启动成功。
5. 测试服务端。打开浏览器,输入http://localhost:8989/Service/ServiceTest?wsdl,如果如下图所示,则说明服务端启动成功。
6. 创建一个Java Web 项目 WS_Clinet 作为客户端,如图所示。
7. 打开 DOS 窗口,运行下面命令。
wsimport -s D:\\MyEclipse\\Workspace\\WS_Client\\src -p com.mll.webservice.client -keep http://localhost:8989/Service/ServiceTest?wsdl
8. 出现下图所示,则说明命令执行成功。
9. 右键刷新 WS_Clinet 项目的 src 文件夹,则出现如图所示的代码结构。
10. 在客户端编写测试类,测试服务器端的 testWS 方法。在 WS_Clinet 项目的 src 文件夹右键 =》New =》Class,填写信息如图所示。
11. 在生成的 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);
- }
- }
12. 运行测试类。在 TestClient.java 上右键 =》 Run As =》Java Application,如果再输出中看到“Test ===>>> Web Service!”,则说明调用服务端的公用类成功。
Good Luck!