文档章节

wsgen工具与JAX-B工件(Artifacts)

柳哥
 柳哥
发布于 2014/04/10 21:53
字数 655
阅读 188
收藏 0

任何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文档


© 著作权归作者所有

柳哥
粉丝 207
博文 405
码字总数 347782
作品 0
杭州
技术主管
私信 提问
Java 字节码工具 ASM 在 web services 开发中的应用

在基于 JAX-WS 标准的 web services 的开发中,不少实际场景都是希望采用自底向上的开发方式, 即基于已有的 Java bean 来创建 web services 。WebSphere Application Server ( 以下简称 WA...

IBMdW
2011/09/26
2.1K
2
JAX-WS开发WebService初级

软件需求 J2EE 7 SDK Eclipse Tomcat Maven JAX-WS的构成 SEI,全称Service Endpoint Interface或Service Endpoint Implemention。是服务器端和客户端开发真正要接触的类。 JAX-WS RI,全称J...

xpbug
2014/04/21
5.8K
3
Java EE—最轻量级的企业框架?

确保高效发展进程的建议 很久以前,J2EE,特别是应用程序服务器被认为过于臃肿和“重量级”。对于开发人员来说,使用此技术开发应用程序会非常繁琐且令人沮丧。但是,由于 J2EE 框架的名称已...

liululee
09/13
72
0
bintray-release定义额外产品(四)

文章摘要: 1、配置与标准工件一起上传的额外工件 系列文章: bintray-release使用指南(一) bintray-release配置publish闭包(二) bintray-release自定义Publication(三) bintray-rele...

Android那些事儿
2017/08/31
0
0
bintray-release自定义Publication(三)

文章摘要: 1、默认配置上传的工件(Artifacts)有哪些? 2、自定义Publication配置详情 系列文章: bintray-release使用指南(一) bintray-release配置publish闭包(二) bintray-release自...

Android那些事儿
2017/08/31
0
0

没有更多内容

加载失败,请刷新页面

加载更多

友元函数强制转换

友元函数强制转换 p522

天王盖地虎626
昨天
4
0
js中实现页面跳转(返回前一页、后一页)

本文转载于:专业的前端网站➸js中实现页面跳转(返回前一页、后一页) 一:JS 重载页面,本地刷新,返回上一页 复制代码代码如下: <a href="javascript:history.go(-1)">返回上一页</a> <a h...

前端老手
昨天
3
0
JAVA 利用时间戳来判断TOKEN是否过期

import java.time.Instant;import java.time.LocalDateTime;import java.time.ZoneId;import java.time.ZoneOffset;import java.time.format.DateTimeFormatter;/** * @descri......

huangkejie
昨天
3
0
分页查询

一、配置 /*** @author beth* @data 2019-10-14 20:01*/@Configurationpublic class MybatisPlusConfig { @Bean public PaginationInterceptor paginationInterceptor(){ ......

一个yuanbeth
昨天
6
0
在LINQPad中使用Ignite.NET

LINQPad是进行.NET开发的一款优秀工具,非常有利于Ignite.NET API的快速入门。 入门 下载LINQPad:linqpad.net/Download.aspx,注意要选择64位操作系统的AnyCPU版本; 安装Ignite.NET的NuGet...

李玉珏
昨天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部