gpt4 book ai didi

java - 如何让 java webservices 使用扩展类

转载 作者:行者123 更新时间:2023-12-01 15:33:21 24 4
gpt4 key购买 nike

我根据从客户那里获得的一个大 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>

这是通过webservice代码发送以下类的结果

@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 使用此设置?

最佳答案

我花了一段时间才弄清楚,但最终的窍门是为每个子类的 PayloadBase 类添加 @XmlSeeAlso 注释。

关于java - 如何让 java webservices 使用扩展类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9279337/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com