博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
wsgen工具与JAX-B工件(Artifacts)
阅读量:6679 次
发布时间:2019-06-25

本文共 3037 字,大约阅读时间需要 10 分钟。

  hot3.png

任何Document样式的服务,无论具有包装还是非包装,都需要由wsgen工具产生的工件(Artifacts,支持客户端开发的相关代码资源)。wsgen工具可以产生构建WSDL文档所需要的类,这些类就是通常所说的wsgen工件。以HelloWord为例,命令如下:

% wsgen -keep -cp . ch03.ts.HelloWordImpl

产生的工件如下:

SayHello.java:

package ch03.ts.jaxws;import javax.xml.bind.annotation.XmlAccessType;import javax.xml.bind.annotation.XmlAccessorType;import javax.xml.bind.annotation.XmlElement;import javax.xml.bind.annotation.XmlRootElement;import javax.xml.bind.annotation.XmlType;@XmlRootElement(name = "sayHello", namespace = "http://ts.ch03/")@XmlAccessorType(XmlAccessType.FIELD)@XmlType(name = "sayHello", namespace = "http://ts.ch03/", propOrder = {    "name",    "wh"})public class SayHello {    @XmlElement(name = "name", namespace = "")    private String name;    @XmlElement(name = "wh", namespace = "")    private String wh;    /**     * @return     * returns String     */    public String getName() {        return this.name;    }    /**     * @param name     * the value for the name property     */    public void setName(String name) {        this.name = name;    }    /**     * @return     * returns String     */    public String getWh() {        return this.wh;    }    /**     * @param wh     * the value for the wh property     */    public void setWh(String wh) {        this.wh = wh;    }}

SayHelloResponse.java:

package ch03.ts.jaxws;import javax.xml.bind.annotation.XmlAccessType;import javax.xml.bind.annotation.XmlAccessorType;import javax.xml.bind.annotation.XmlElement;import javax.xml.bind.annotation.XmlRootElement;import javax.xml.bind.annotation.XmlType;@XmlRootElement(name = "sayHelloResponse", namespace = "http://ts.ch03/")@XmlAccessorType(XmlAccessType.FIELD)@XmlType(name = "sayHelloResponse", namespace = "http://ts.ch03/", propOrder = {    "wh",    "hf"})public class SayHelloResponse {    @XmlElement(name = "wh", namespace = "")    private String wh;    @XmlElement(name = "hf", namespace = "")    private String hf;    /**     * @return     * returns String     */    public String getWh() {        return this.wh;    }    /**     * @param wh     * the value for the wh property     */    public void setWh(String wh) {        this.wh = wh;    }    /**     * @return     * returns String     */    public String getHf() {        return this.hf;    }    /**     * @param hf     * the value for the hf property     */    public void setHf(String hf) {        this.hf = hf;    }}

上面的命令生成了相应的工件,同时根据需要产生这些工件存储的包:ch03.ts.jaxws。在HelloWord这个例子中,总共有2种消息(Message),sayHello操作的请求与响应消息。wsgen工具针对每一种消息均产生了一个java类来对应一个Java数据类型。发布程序正是利用这些java数据类型来产生Document绑定样式服务的WSDL文档。因此每一个Java数据类型对应一个XML模式类型,而这些XML模式类型又用来定义服务中涉及的2个消息。(注:原来这样啊!wsgen产生的工件对应WSDL中message部分定义的类型)wsgen工具产生绑定到XML模式类型的Java类型。而在底层,这个工具用到了JAX-B(Java API for XML-Binding)相关的API包。概括地讲,JAX-B对Java和XML之间的类型转换提供支持。

wsgen工具说明

wsgen工具主要产生构建WSDL文档所需要的类。这个工具用在服务实现类上,用来生成工件与WSDL文档。命令示例如下:

% wsgen -keep -cp . ch03.ts.HelloWordImpl

命令参数说明如下:

参数 说明
-cp                                                                       
定义classpath
-r 指定生成WSDL文档的存放目录
-s
指定生成的源代码文件的存放目录
-d 指定生成的class文件的存放目录
-wsdl 生成WSDL文档与XSD文档

转载于:https://my.oschina.net/fhd/blog/220838

你可能感兴趣的文章
linux文件系统 - 初始化(二)
查看>>
Python的可视化图表工具集
查看>>
《条目二十九:对于逐个字符的输入请考虑istreambuf_iterator》
查看>>
三个文件,
查看>>
webpack的总结
查看>>
hibernate 一级缓存和二级缓存
查看>>
javac不是内部或外部命令
查看>>
mvc SelectList selected失效的解决方法
查看>>
JAVA 设计模式 中介者模式
查看>>
我的软件工程课目标
查看>>
var a={n:1}; var b=a; a.x=a={n:2}; console.log(a.x); console.log(b.x);
查看>>
【HDOJ】3016 Man Down
查看>>
window.open打开新页面,并将本页数据用过url传递到打开的页面;需要两个页面;...
查看>>
查看本机IP分为两种情况:
查看>>
Scala进阶之路-Scala特征类与unapply反向抽取
查看>>
洛谷P3057 [USACO12NOV]远处的牧场Distant Pastures
查看>>
hdu3415 Max Sum of Max-K-sub-sequence 单调队列
查看>>
6421B Lab2 DHCP的配置及故障排除
查看>>
[C# 基础知识梳理系列]专题一:深入解析委托——C#中为什么要引入委托
查看>>
FOSCommentBundle功能包:其它添加评论到页面的方法
查看>>