问题描述
|
我有以下问题,无法找到解决方案:
WSDL具有“ 0”,作为响应,我在CXF客户端中收到的所有元素都以命名空间为前缀,但是JAXB抛出异常
org.apache.cxf.interceptor.Fault:编组错误:意外元素(uri:\“ unm:ENTSCWS \”,本地:\“ searchReturn \”)。预期元素是
在org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:661)
在org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:533)
在org.apache.cxf.jaxb.io.DataReaderImpl.read(DataReaderImpl.java:128)...
如果我在WSDLѭ1中进行了更改,则它可以正常工作,但是我不允许更改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中运行吗?我已经看到一些类似的问题,其中package-info \的信息没有被正确接收。
另一种选择是将-xjc-npa标志添加到wsdl2java命令中,以使其完全不使用package-info并将名称空间保留在所有其他位置。