快速业务通道

Java Web服务 - Axis2中的JAXB和JAX-WS - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-20
blic String getType() {      return type;    }    public void setType(String value) {      this.type = value;    }    public String getIsbn() {      return isbn;    }    public void setIsbn(String value) {      this.isbn = value;    } } @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = "", propOrder = {    "getBookReturn" }) @XmlRootElement(name = "getBookResponse") public class GetBookResponse {    protected BookInformation getBookReturn;    public BookInformation getGetBookReturn() {      return getBookReturn;    }    public void setGetBookReturn(BookInformation value) {      this.getBookReturn = value;    } }

Java Web服务 - Axis2中的JAXB和JAX-WS(5)

时间:2011-01-30 IBM Dennis Sosnoski

@XmlAccessorType 注释在包或类级别使用,用于控制从类中访问值的方式 — 包括访问所有字段、访问所有具有 get/set 访问方法的属性、只访问公开字段和属性,或仅根据某个注释的指定进行访问。@XmlType 注释在匹配某个模式类型的类或 enum 定义中使用,以向 JAXB 提供模式类型的名称和名称空间(如果有的话)、类型表示中的值的顺序,以及如何使用一个工厂方法构建类的实例(可选)。@XmlRootElement 注释在匹配全局元素定义的类或 enum 定义中使用,用于提供全局元素的名称和名称空间。@XmlElement 和 @XmlAttribute 注释在值中使用(以字段或 JavaBean 属性方法的形式),提供元素或属性名和其他特征)。

JAXB 使用的所有注释都位于 javax.xml.bind.annotation 包中,除了这个简单示例生成的代码中使用的注释外,还包括许多其他注释。JAXB 支持从模式中生成代码(本例就属于此例),也支持从代码中生成。某些注释和选项(比如那些处理对象工厂和串行器/并行器方法的注释和选项)只能用于从代码中生成的情况。

Axis2 中的 JAXB 问题

WSDL2Java 调用 JAXB 参考实现中附带的 XJC 绑定编译器来生成数据模型代码,因此在大多数方面数据模型代码的生成是独立于 Axis2 的。如果直接在 Web 服务使用的模式上面运行 JAXB XJC 绑定编译器,您将生成相同的数据模型。不幸的是,WSDL2Java 和 XJC 之间的阻抗匹配并不总是正确的,这就会导致一些问题。

其中一个问题与在 WSDL 文档中构建模式的方式有关。库服务的初始 WSDL 使用单个文档,该文档合并了两个独立的模式,一个用于 WSDL 消息元素,另一个用于应用程序数据(图书和类型信息)。如 WSDL 允许的那样,消息元素模式通过名称空间引用导入了应用程序数据模式。这个包含嵌入模式的 WSDL 可以很好地与使用 ADB 或 JiBX 数据绑定的 WSDL2Java 工作,但是对于 JAXB,它将在模式处理期间引发一个异常抛出。将应用程序数据模式分离到一个单独的文件并在模式导入时指定文件名称,这将允许 WSDL2Java 使用 JAXB 绑定正确地处理模式。

另一个问题是,XJC 提供了大量代码生成选项以及许多定制来控制针对某一特定模式组件的代码生成细节 — 但是 WSDL2Java 没有提供任何方法来将这些选项或定制传递给 XJC,因此代码生成将始终按照默认设置运行。如果需要使用任何代码生成选项或定制,可能需要单独运行 XJC 和 WSDL2Java。不幸的是,无法在 WSDL2Java 代码生成中使用单独生成的 JAXB 数据模型。如果需要使用定制的 JAXB 数据模型,最佳办法可能就是运行 WSDL2Java 以生成其自己的 JAXB 代码模型,然后再换入您单独生成的数据模型类,并根据需要手动修改代码来将所有内容联合到一

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号