什么是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