我的应用程序使用 CXF WSDL2JAVA 从客户端提供的 WSDL 生成 Java 类。
他们现在更改了他们的 web 服务,在响应中添加了 3 个额外的字符串字段。重新生成 java 类对我们来说有点返工,但是我们遇到了一个异常:
javax.xml.ws.soap.SOAPFaultException:解组错误:意外元素(newElement)
有没有办法让 CXF 忽略响应中的额外元素?
如果添加以下端点属性:
“设置 jaxb 验证事件处理程序”为“假”
那么 CXF 不会将事件处理程序添加到 JAXB 解组器中,并且会默默地忽略意外元素。您需要确保消息的其余部分完全正确,因为如果消息不正确,您不会收到任何错误或任何内容。例如,常见的情况是当 JAXB 期待不合格的元素时,有人发送了合格的元素。如果不设置处理程序,对象中的所有字段都会以“null”结束。使用处理程序,您会收到如下消息:
意外元素(uri:“ http://my.namespace.com ”,本地:“myField”)。预期元素是 <{}myField>
所以你可以看到命名空间限定是原因。