JDK6 webservice的应用(注意SOAPBinding.Style不同的差异)

从JDK6.0开始,Java引入了对Web Service的支持。
我们只需要简单的使用Java的Annotation标签即可将标准的Java方法发布成Web Service。
本文注意讲述下本人在实际运用中因为SOAPBinding.Style不同,在生成webwervice时的一些差异。
SOAPBinding.Style:PRC、DOCUMENT , JDK6 中默认的是DOCUMENT。
下面通过具体的例子详细讲述JDK6 webservice的应用和差异。
1.DOCUMENT
Java类:MessageJws.java 特别注意下 @SOAPBinding(style = SOAPBinding.Style.DOCUMENT)

 PS:如果发布webservice的java类的方法中有异常声明时,是不能直接发布成webservice的,需要用wsgen命令生成相应的异常处理的类。

wsgen 命令 可以为我们生成wsdl 和异常处理的类(本例没有声明异常处理)
本例的class目录结构如下:calsses\com\michael\MessageJws.class

在执行下面的命令之前需要新建文件夹classes\wsdl\,用来存放生成wsdl文件
如果创建文件夹classes\bin\、classes\src\:…\classes>执行下面的命令:

如果不创建上面的src、bin文件夹则可以: …\classes>执行下面的命令:

这时在 calsses\com\michael\ 下看到生成了新的文件夹jaxws,jaxws目录下的文件如下:

同时在刚才新建的 classes\wsdl\ 下生成了两个wsdl相关文件
MessageJwsService.wsdl 和 MessageJwsService_schema1.xsd详细见附见wsdl文件

wsimpot 命令 可以很方便的用来构建Web Service的客户端。
在执行下面的命令之前需要在classer\下 新建文件夹bin和src
…\calasses->执行下面的命令:

这时可以在 calsses\src\com\michael\messageclient\  路径下看到:


到此 客户端已经生成好了。

2.RPC

如果把MessageJws.java 的改为:@SOAPBinding(style = SOAPBinding.Style.RPC)
执行wsgen 命令后,不同于上面DOCUMNET的

  • 在 calsses\com\michael\ 下不会生成目录jaxws以及jaxws下的相关类。
  • 在 classes\wsdl\ 下只生成了一个文件:MessageJwsService.wsdl

详细见附见wsdl文件 执行wsimport 命令后在calsses\src\com\michael\messageclient\ 路径下看到:

和上面DOCUMENT生成客户端相比较明显不同

PS: 本文中用到的 wsgen与wsimport命令说明
wsgen 是在JDK的bin目录下的一个exe文件(Windows版),该命令的主要功能是用来生成合适的JAX-WS。它读取Web
Service的终端类文件,同时生成所有用于发布Web
Service所依赖的源代码文件和经过编译过的二进制类文件。这里要特别说明的是,通常在Web Service
Bean中用到的异常类会另外生成一个描述Bean,如果Web Service
Bean中的方法有申明抛出异常,这一步是必需的,否则服务器无法绑定该对像。此外,wsgen还能辅助生成WSDL和相关的xsd文件。wsgen从资
源文件生成一个完整的操作列表并验证web service是否合法,可以完整发布。

命令参数说明: 
-cp 定义classpath
-r 生成 bean的wsdl文件的存放目录
-s 生成发布Web Service的源代码文件的存放目录(如果方法有抛出异常,则会生成该异常的描述类源文件)
-d 生成发布Web Service的编译过的二进制类文件的存放目录(该异常的描述类的class文件)
例如:

wsimport 也是在JDK的bin目录下的一个exe文件(Windows版),主要功能是根据服务端发布的wsdl文件生成客户端存根及框
架,负责与Web Service
服务器通信,并在将其封装成实例,客户端可以直接使用,就像使用本地实例一样。对Java而言,wsimport帮助程序员生存调用web
service所需要的客户端类文件.java和.class。要提醒指出的是,wsimport可以用于非Java的服务器端,如:服务器端也许是C#
编写的web service,通过wsimport则生成Java的客户端实现。

命令参数说明: 
-d 生成客户端执行类的class文件的存放目录
-s 生成客户端执行类的源文件的存放目录
-p 定义生成类的包名
例如:

原创文章,转载请注明: 转载自micmiu – 软件开发+生活点滴[ http://www.micmiu.com/ ]

本文链接地址: http://www.micmiu.com/soa/webservice/jdk6-webservice-doc-rpc/

发表评论?

0 条评论。

发表评论


注意 - 你可以用以下 HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">