HelloWorld of Web Service by Java

通过 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 计算服务的方法,返回值不一定要字符串型,参数个数可以是变长的。对照代码查看,一目了然。

代码地址:

http://git.oschina.net/iridiumcao/hellows/blob/develop/src/main/java/info/iridiumcao/hellows/helloworld/server/HelloWebService.java

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 项目中即可。

自己再开发一个类用于测试,代码参这里

http://git.oschina.net/iridiumcao/hellows/blob/develop/src/main/java/info/iridiumcao/hellows/helloworld/client/HelloWSClient.java

优缺点

优点:

  1. 不依赖第三方包,方便
  2. 上手容易

缺点:

看起来很简单的样子,但这种开发方式也有一定缺点:

  1. 包路径不灵活
  2. 对所有的 WS 接口都生成两个类,代码比较多

如果要在生产环境中用这种方式,可能需要对直接生成的代码进行调整才用的上。