CXF没有向生成的类

时间:2016-01-29 10:22:23

标签: java soap jaxb wsdl cxf

我尝试根据传入的XML complexType向生成的类添加超类定义。当我将映射设为通用时,就像这样,它可以工作:

<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中定义complexType的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

1 个答案:

答案 0 :(得分:1)

试试这种方式

<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,这只适用于全局绑定,即所有生成的类,而不适用于单个生成的类