如何让java Web服务使用扩展类

如何让java Web服务使用扩展类,java,web-services,cxf,Java,Web Services,Cxf,我使用ApacheCXF基于我们从客户机获得的一个大wsdl生成了一组类。它使用anyType让它包含一大堆不同的类型。这是wsdl <complexType name="PayloadBase"> <complexContent> <restriction base="{http://www.w3.org/2001/XMLSchema}anyType"> </restriction> </co

我使用ApacheCXF基于我们从客户机获得的一个大wsdl生成了一组类。它使用anyType让它包含一大堆不同的类型。这是wsdl

<complexType name="PayloadBase">
    <complexContent>
        <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
        </restriction>
    </complexContent>
</complexType>
事实证明,任何想要使用这个类的子类的类都不知道如何使用它。例如,PayloadBase的一个子类被添加到一个包装对象中,该对象也包含一个时间戳,生成以下XML

<bericht timestamp="2012-02-14T16:03:34.331+01:00"><payload/></bericht>

使用的任何PayloadBase实例都不会显示在结果xml中。我已经用调试器验证了PayloadBase实例确实充满了内容。如何让java webservices使用此设置?

我花了一段时间才弄明白,但最后的诀窍是为每个子类的PayloadBase类添加@XmlSeeAllow注释

我认为,这是正确的方向。如果您需要完整的解决方案,请在您的问题中提供两个具有不同有效负载的XML示例。
<bericht timestamp="2012-02-14T16:03:34.331+01:00"><payload/></bericht>
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "BerichtDescription", propOrder = {
    "payload"
})
public class BerichtDescription {

    @XmlElement(required = true)
    protected PayloadBase payload;
    @XmlAttribute(name = "timestamp", required = true)
    @XmlSchemaType(name = "dateTime")
    protected XMLGregorianCalendar timestamp;