我有以下问题并且找不到解决方案:
WSDL 有elementFormDefault="qualified"
,在我在 CXF 客户端收到的响应中,所有元素都以名称空间为前缀,但 JAXB 抛出异常
org.apache.cxf.interceptor.Fault: Unmarshalling Error: unexpected element (uri:"unm:ENTSCWS", local:"searchReturn"). Expected elements are
at org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:661)
at org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:533)
at org.apache.cxf.jaxb.io.DataReaderImpl.read(DataReaderImpl.java:128) ...
如果我更改 WSDLelementFormDefault="unqualified"
它正在工作,但我不允许更改 WSDL,它应该具有以名称空间为前缀的元素。
package-info.java 包含注释:
@javax.xml.bind.annotation.XmlSchema(namespace = "unm:ENTSCWS", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
package entscws;
响应类包含注释:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"searchReturn"
})
@XmlRootElement(name = "searchResponse")
public class SearchResponse {
您知道我为什么会收到此错误吗?
你在 OSGi 中运行吗?我已经看到一些类似的问题,其中包信息没有被正确获取。
另一种选择可能是添加-xjc-npa标记 wsdl2java 命令以使其根本不使用包信息并将名称空间粘贴在所有其他位置。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)