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 [email protected] */ @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