什么是WebService,我的理解就是将某个类中的方法发布成Web服务 供别人调用(一个方法即一个服务)。最常见的Web服务有天气预报、手机号码归属地等等。
更专业的理论知识,Google一下,你就知道~
开发Web Service的方式有很多种,如Apache axis2、apache cxf、 xfire、以及Java6
Java 6 的一个新特性就是通过简单的annotaion将你的一个类发布成一个WebService.
本篇文章主要是介绍如何用Java编写自己的Web服务,发布,以及调用服务。
一、编写服务代码:
package com.xcy; import javax.jws.WebService; /** * @author 肖纯勇(Siuon) * @version 1.0 * @create 2012-7-19 下午7:28:12 */ //在想要发布成WebService的类上加上注解@WebService @WebService public class Java6WB { /** * 提供了一个说Hello的服务 * @return */ public String sayHello(String name){ return "Hello "+name; } /** * 提供了一个做加法的服务 * @param a * @param b * @return */ public int add(int a,int b){ return a + b; } }
二、发布服务
package com.xcy; import javax.xml.ws.Endpoint; /** * @author 肖纯勇(Siuon) * @version 1.0 * @create 2012-7-19 下午7:33:27 */ public class Test { public static void main(String[] args) { Endpoint.publish("http://localhost:8080/ws/Java6WB", new Java6WB()); } }
运行后,打开浏览器访问:http://localhost:8080/ws/Java6WB?wsdl 可以看到:
三、通过jdk6的工具 生成客户端代码:
java6提供了一个wsimport.exe程序用来解析wsdl文件生成客户端代码用的。(wsimport.exe在jdk\bin目录下);
假设你已经配置了Java环境变量
wsimport -d [class文件存放目录] -s [源码存放目录] -p [包名] -keep [wsdl的URI]
在这里,我只指明了包名和wsdl的uri,这种情况下class文件和源码会在包所指的目录(其实你可以把源码目录指向你的工程)
四、通过生成的客户端代码调用Web服务
package test; import com.xcy.webservice.client.Java6WB; import com.xcy.webservice.client.Java6WBService; /** * @author 肖纯勇(Siuon) * @version 1.0 * @create 2012-7-19 下午8:05:40 */ public class Test { public static void main(String[] args) { //创建客户端对象 Java6WB java6wb = new Java6WBService().getJava6WBPort(); //调用 String result = java6wb.sayHello("Siuon"); System.out.println(result); int sum = java6wb.add(1, 3); System.out.println(sum); } }结果
Apache axis2 + Eclipse 开发 WebService