java - CXF 未将父类(super class)添加到生成的类中

标签 java soap jaxb wsdl cxf

我尝试将父类(super class)定义添加到基于传入的 XML 复杂类型生成的类。当我将映射设为通用时,如下所示,它可以工作:

<jaxb:globalBindings generateElementProperty="false">
  <xjc:superClass name="nl.ilent.bpo.interceptor.Hashable" />
</jaxb:globalBindings>

现在我只想要一种类型来子类化该类。我尝试了很多选择器,但这是唯一一个恰好找到一种类型的选择器:

<jaxb:bindings schemaLocation="../xsd/OrganisatieTypes.xsd" node="//xs:complexType[@name='DatumIncompleetType']">
  <xjc:superClass name="nl.ilent.bpo.interceptor.Hashable" />
</jaxb:bindings>

尽管许多替代方案给出了“0 个节点”结果,而这个却没有,但生成的类不会子类化 Hashable。我做错了什么?

这是在 ../xsd/OrganisatieTypes.xsd 中定义复杂类型的 XSD:

<xsd:complexType name="DatumIncompleetType">
  <xsd:choice minOccurs="0">
    <xsd:element name="datum" type="xsd:date"/>
    <xsd:element name="jaarMaand" type="xsd:gYearMonth"/>
    <xsd:element name="jaar" type="xsd:gYear"/>
  </xsd:choice>
</xsd:complexType>

我们正在使用 CXF 2.7.18

最佳答案

试试这个方法

<jaxb:bindings schemaLocation="../xsd/OrganisatieTypes.xsd" node="/xs:schema">
    <jaxb:bindings>
        <jaxb:bindings node="//xs:complexType[@name='DatumIncompleetType']">
            <xjc:superClass name="nl.ilent.bpo.interceptor.Hashable" />
        </jaxb:bindings>
    </jaxb:bindings>
</jaxb:bindings>

编辑
好吧,抱歉,这行不通:根据 https://docs.oracle.com/cd/E17802_01/webservices/webservices/docs/2.0/jaxb/vendorCustomizations.html#superclass这仅适用于全局绑定(bind),即适用于所有生成的类,不适用于单个生成的类

关于java - CXF 未将父类(super class)添加到生成的类中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35082053/

相关文章:

java - 我可以配置 XJC 绑定(bind)以将集合生成为 Set 而不是 List

java - 该按钮不可见,它将连接 android studio 中的另一个 Activity

java - 扫描仪 nextInt() 和 hasNextInt() 问题

java - Google AppEngine LogService出现OutOfMemoryError

php - SOAP教程php发送和接收消息

java - 从同一 Jaxb 架构文件创建多个 @XmlRootElement

types - JAXB:在 XSD 中指定 attr 类型时如何更改 XJC 生成的类名称?

java - 外键未存储在子实体中(一对多)

.net - 移动类时保持 .NET 序列化数据兼容性

web-services - Web 服务调用返回 faultString "Cannot find dispatch method for namespace/soapAction"