Java6.0之后,JDK自带了一个轻量级的Web Service服务器。
因此,使用JDK自带的API,不必担心框架(Axis、Spring WS)升级、更新等系列问题。
开发步骤:
1、创建一个WebServer Project
package wei.peng.server;
import javax.jws.Oneway;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
import javax.xml.ws.Endpoint;
/**
* @author WPeng
* @time 2011-3-14 AM 12:03:33
* @email pengwei841221@126.com
*/
@WebService(targetNamespace = "http://localhost:8888/WEIPENG",
serviceName = "HelloServices")
public class WSProvider {
// 自定义该方法返回值在WSDL中相关的描述
//@WebResult(name="Greetings")
@WebMethod(action="sya",operationName="sayHi")
// WebParam是自定义参数name在WSDL中相关描述
public String sayHi(@WebParam(name="MyName") String name){
return "Hi, " + name;
}
// 表明该服务方法是单向的,既没有返回值,也不应该什么检查异常
@Oneway
// 自定义方法在WSDL中相关描述
@WebMethod(action="printSystemTime",operationName="printSystemTime")
public void printTime(){
System.out.println(System.currentTimeMillis());
}
public static void main(String args[]){
Thread wsPublisher = new Thread(new WSPublisher());
wsPublisher.start();
}
private static class WSPublisher implements Runnable{
@Override
public void run() {
// 发布WSPublisher到http://localhost:8888/WEIPENG/HelloServices这个地址
// 之前必须调用wsgen命令,生成服务类HelloServices的支持类,命令如下:
// wsgen -cp . wei.peng.server.WSProvider
Endpoint.publish("http://localhost:8888/WEIPENG/HelloServices", new WSProvider());
}
}
}
在服务器端运用 @WebService @WebMethod 等注释描述生成WSDL文件。
进入classes目录,运行
wsgen -cp ./bin -r ./wsdl -s ./src -d ./bin -wsdl wei.peng.server.WSProvider
执行之后会在WSDL文件夹中生成HelloServices的wsdl描述文件,
src文件夹中生成依赖类
bin生成依赖类的class文件
2、运行WSProvider
在浏览器打开
http://localhost:8888/WEIPENG/HelloServices?wsdl
3、创建WebClient Project
wsimport -d ./bin -s ./src -p wei.peng.client http://localhost:8888/WEIPENG/HelloServices?wsdl
会在客户端的wei.peng.client目录下生成相关的辅助类文件(便于客户端的调用)
共有七个文件:HelloServices.java
ObjectFactory.java
package-info.java
PrintSystemTime.java
SayHi.java
SayHiResponse.java
WSProvider.java
4、编写客户端程序
package wei.peng.client.test;
import wei.peng.client.HelloServices;
import wei.peng.client.WSProvider;
public class TestClient {
public static void main(String[] args) {
HelloServices helloServices = new HelloServices();
WSProvider wsProvider = helloServices.getWSProviderPort();
System.out.println(wsProvider.sayHi("wei.peng"));
wsProvider.printSystemTime();
}
}
5、运行TestClient
本文介绍如何利用Java6.0内置的WebService功能搭建一个简单的WebService应用。从创建服务端项目开始,通过使用@WebService和@WebMethod等注解自动生成WSDL文件,并通过命令行工具wsgen和wsimport生成客户端和服务端之间的交互类。最后,通过示例代码演示了客户端如何调用服务端提供的WebService方法。
2512

被折叠的 条评论
为什么被折叠?



