通过 Java 实现 Web Service 的方式有很多种,但鄙人本着能少用第三方库,就少用第三方库的原则,无视 Axis2, CXF 等。实际上从 JDK 5.0 开始,Java 就原生支持 WS 程序开发了,不过网上有说,要使用原生方式,最好让 JDK 的版本在6.0或之上。这个不是问题,因为目前 Java 8都开始流行了。
所有代码都在 OSC: http://git.oschina.net/iridiumcao/hellows,这里已无贴代码的必要,感谢 OSC!
服务端开发
服务端可以非常简单,就是一个标记了 @WebService 注解的类。该注解的几个属性,会影响到 WS 客户端的生成。在 main 方法中,通过 Endpoint 发布 WS.
各种 Service 方法,就是这个类里的 public 方法。提供 WS 计算服务的方法,返回值不一定要字符串型,参数个数可以是变长的。对照代码查看,一目了然。
代码地址:
Run 这个类之后,WS 服务端就启动了,并开始提供服务。
客户端开发
上面提到的 WS 服务端启动后,访问http://192.168.0.104:8080/hello/WS?wsdl 可以查看到该 WS 的具体描述内容,就可以开始开始开发客户端了。
说开发,可能有点言过其实。因为代码可以直接通过 wsimport 工具生成。
wsimport.exe -d d:\sandbox\hellows -encoding UTF8 -keep http://192.168.0.104:8080/hello/WS?wsdl
好了,wsimport 工具根据 WSDL 信息生成了客户端代码,复制到 Java 项目中即可。
自己再开发一个类用于测试,代码参这里:
优缺点
优点:
缺点:
看起来很简单的样子,但这种开发方式也有一定缺点:
如果要在生产环境中用这种方式,可能需要对直接生成的代码进行调整才用的上。