【发布时间】:2013-07-21 19:33:27
【问题描述】:
我的应用程序使用 CXF WSDL2JAVA 从客户端提供的 WSDL 生成 Java 类。
他们现在更改了他们的网络服务,在响应中增加了 3 个字符串字段。 重新生成 java 类对我们来说有点返工,但是我们遇到了一个异常:
javax.xml.ws.soap.SOAPFaultException:解组错误:意外元素(newElement)
有没有办法让 CXF 忽略响应中的额外元素?
【问题讨论】:
我的应用程序使用 CXF WSDL2JAVA 从客户端提供的 WSDL 生成 Java 类。
他们现在更改了他们的网络服务,在响应中增加了 3 个字符串字段。 重新生成 java 类对我们来说有点返工,但是我们遇到了一个异常:
javax.xml.ws.soap.SOAPFaultException:解组错误:意外元素(newElement)
有没有办法让 CXF 忽略响应中的额外元素?
【问题讨论】:
如果添加端点属性:
“set-jaxb-validation-event-handler”为“假”
然后 CXF 不会将事件处理程序添加到 JAXB 解组器中,并且意外元素将被静默忽略。您需要确保消息的其余部分完全正确,因为如果消息不正确,您不会收到任何错误或任何内容。例如,经常发生的事情是当 JAXB 期待不合格的元素时,有人发送了合格的元素。如果不设置处理程序,对象中的所有字段最终都会为“null”。使用处理程序,您会收到如下消息:
意外元素(uri:“http://my.namespace.com”,本地:“myField”)。预期元素是
所以你可以看到命名空间限定是原因。
【讨论】: