我根据我们从客户端获得的一个大wsdl生成了一组带有apache cxf的类。它使用anyType让它包含一大堆不同类型。这是wsdl
<complexType name="PayloadBase">
<complexContent>
<restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
</restriction>
</complexContent>
</complexType>
这将转换为以下java代码
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "PayloadBase")
public class PayloadBase {
// empty as you can see
}
事实证明,任何想要使用这个类的孩子的班级都不知道如何使用它。比如说,PayloadBase的子类被添加到一个包含时间戳的包装对象中,生成以下XML
<bericht timestamp="2012-02-14T16:03:34.331+01:00"><payload/></bericht>
这是通过Web服务代码发送以下类的结果
@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;
所使用的PayloadBase的任何实例都不会在生成的xml中显示。我已经通过调试器验证了PayloadBase实例确实填充了内容。如何让java webservices使用此设置?
答案 0 :(得分:1)
我花了一些时间来弄清楚,但最后的诀窍是为每个子类的PayloadBase类添加@XmlSeeAlso注释。