`
steeven
  • 浏览: 313077 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

JAXB/WebService中的子类继承关系的schema导出

阅读更多
继承关系在Java中太常见了. 而用父类作为参数或者返回值转递时,生成的schema xsd里面不包含子类的定义, 所以在子类中拿到的一直都是父类.
google了一下, 网上这个问题的答案很少. 特此记之.

举例:
public class MO {
    public String dn;
}
public class MoOne extends MO {
    public String one;
}
@WebService(serviceName = "MoService")
public class MoService {
    public MO get(long id) {
       return new MoOne(id);
    }
}


客户端wsimport生成的代码里面不会有MoOne, 并且调用结果只是MO.

解决方法有两个:
1. JAXBContext.newInstance(MoOne.class) //这个方法太猥琐, 如果发布在J2EE容器里面,还是不会自动生成wsdl
2. 在Jaxb2.1里面这个问题用@XmlSeeAlso解决了, 在MO上面加上一个:
@XmlSeeAlso({MoOne.class,MoTwo.class})
在客户端引用之后, 可以看到MoOne的类已经自动生成了.

有人会怀疑, 为什么jaxb这么呆, 不会自己找到子类去生成schema? 对, 就是这么呆, java里面是不支持对子类的查询的, 就是不知道MO有哪些子类. 所以要手工声明出来. 当然如果一定要做, 还是有技巧的. sun考虑到网络加载什么的, 就把自己限定在那里了.

1
1
分享到:
评论
2 楼 steeven 2009-05-14  
JavaDoc
http://java.sun.com/javase/6/docs/api/javax/xml/bind/annotation/XmlSeeAlso.html
1 楼 steeven 2009-05-14  
以上在JDK1.6.0_13/netbeans6.5/glassfish3下测试通过.

相关推荐

    开发JAR包集合-cxf/dom4j/jaxb/json/jta/jxl

    开发JAR包集合-cxf/dom4j/jaxb/json/jta/jxl 解压文件得到如下jar包 cxf-2.2.8.jar dom4j-1.6.1.jar ehcache-core-2.2.0.jar jaxb-api-2.2.jar jaxb-impl-2.2.jar json-lib-2.4-jdk15.jar json-lib-ext-...

    Jaxb webservice java调用

    Java中的JAXB(Java Architecture for XML Binding)是一个用于在Java对象和XML之间进行绑定的工具,使得我们可以方便地在XML文档和Java对象之间进行转换。它简化了Web服务的开发,尤其是在处理XML数据时。本篇文章...

    JAXB的安装包及插件

    **JAXB(Java Architecture for XML Binding)** 是Java平台中用于XML到Java对象绑定的API,它是Java EE和Java SE标准的一部分,允许开发者在Java应用程序中方便地将XML数据转换为Java对象,反之亦然。这个过程极大...

    JAXB2 Webservice

    NULL 博文链接:https://endeavor416.iteye.com/blog/270507

    WebService入门教程_Schema学习示例代码

    在WebService中,Schema起着至关重要的作用,因为它为交换的数据提供了严格的语义定义,确保了不同系统间数据的准确性和一致性。 首先,让我们理解一下WebService的基本概念。WebService的核心技术包括SOAP(Simple...

    webservice之使用jaxb把xml转换Object或把对象转换成xml文件

    在Java世界中,使用JAXB(Java Architecture for XML Binding)库可以方便地实现XML数据与Java对象之间的转换,从而在WebService中轻松处理数据交换。本篇文章将深入探讨如何使用JAXB进行XML到Object以及Object到XML...

    webService

    ### WebService技术与Java中的CXF框架应用 #### 一、WebService概述 WebService是一种跨语言、跨平台的应用间通信协议,允许在分布式环境下构建松耦合、标准的应用组件。通过XML、SOAP、WSDL和UDDI等标准,...

    用JAXB生成一个XML

    - 将JWSDP/jaxb/bin目录添加到PATH环境变量中。 - 同样地,将JWSDP/jwsdp-shared/bin目录添加到PATH环境变量中。 #### 三、XML模式分析 接下来,我们来看一个简单的例子。假设我们有一个XML模式(catalog.xsd)...

    JAXB Demo及namespace的prefix自定义解决方案

    在实际应用中,你可能还需要处理更复杂的情况,比如处理多个命名空间、处理嵌套的对象以及处理继承关系。JAXB提供了丰富的功能和灵活性来处理这些情况,但同时也需要对XML和Java反射机制有深入的理解。 总结一下,...

    jaxb-impl.jar包

    impl.jar`是Java Architecture for XML Binding (JAXB)的一个实现包,它是Java平台标准版(Java SE)和企业版(Java EE)的一部分,主要用于XML到Java对象的绑定以及反之,使得开发者能够方便地在Java程序中处理XML...

    jaxb开发使用文档

    jaxb还提供了大量的实例和教程,例如编写第一个jaxb程序、为jaxb编写Schema、schema的时间日期类型、schema的list元素、使用枚举类型、使用schema的choice类型、同构集合、schema编写继承关系、schema的ID和IDREF等...

    jaxb2.3.0依赖jar.rar

    Java Architecture for XML Binding (JAXB) 是Java平台中用于XML到Java对象绑定的标准技术,它允许开发者在Java程序中直接操作XML数据,而无需编写大量的XML解析和序列化代码。JAXB 2.3.0是该技术的一个版本,包含了...

    WebService的WSDL文件生成Java代码工具

    在本话题中,我们将深入探讨如何利用WSDL文件生成Java代码,以便于开发和调用WebService。 WSDL文件是WebService的核心,它定义了服务的接口、消息格式、操作和地址等信息。WSDL是XML格式的,可以被工具解析并生成...

    用jaxb自动生成xsd对像

    在Java世界中,Java ...总的来说,JAXB通过自动化XML Schema到Java对象的映射,简化了开发过程中XML数据的处理,提高了开发效率和代码的可维护性。结合XSD,可以确保数据的结构正确性,避免因格式错误导致的问题。

    JAXB与xml相互转换实例

    - 由JAXB自动生成的Java类,这些类对应于XML Schema中的元素和类型。 - 一个或多个Java源代码文件,演示如何使用JAXB进行 marshalling 和 unmarshalling。 - 测试用例,展示了如何在实际应用中使用这些类进行数据...

    testXML.zip_xml/soap/webservice_Java_

    标题中的“testXML.zip_xml/soap/webservice_Java_”暗示了这个压缩包包含了一个关于XML、SOAP(Simple Object Access Protocol)和Web服务的Java实现示例。描述中提到的是一个“简单易学的XML解析JAVA完整实例”,...

    jaxb-core-2.2.11.jar

    javaweb常用jar包,javaee框架常用jar包,亲测可用,若需其他版本可给我留言

    javax.rar(jaxb-impl-2.3.0、jaxb-core-2.3.0、jaxb-api-2.3.0)

    在Java开发环境中,`javax.rar`这一提及实际上与RAR压缩库无关,而是涉及到Java的XML绑定(JAXB)技术。标题中的"jaxb-impl-2.3.0、jaxb-core-2.3.0、jaxb-api-2.3.0"是JAXB的不同组件版本号,它们在处理XML到Java...

    jaxb (XML操作)

    1. Java官方文档:https://docs.oracle.com/javase/8/docs/technotes/guides/xml/jaxb/index.html 2. JAXB Tutorials:https://www.baeldung.com/jaxb 3. Stack Overflow:...

Global site tag (gtag.js) - Google Analytics