我有一个从.net应用程序提供的SOAP Web服务。有时我们会添加一些对象定义,但这些对象定义总是可选的,从XML / HTTP的角度来看,代表这些字段的xml标签可以省略,并且工作正常。这应该让现有的Web服务用户继续工作。
这正是它几乎对每个人都有效的方式。使用.net,python,ruby等的客户都没有问题。但是任何改变似乎都会破坏任何在Java中使用Apache Axis2的人。
似乎在每个请求中,Axis都会检查端点WSDL,并验证它是否与它拥有的存根完全相同。如果没有,则抛出异常。 (意外的子元素)
Axis中是否有任何选项可以关闭此功能并让Axis假设它的当前存根是正确的?
更新: 我还应该注意,对于使用ColdFusion的客户端来说这是一个问题,因为它使用Axis2
答案 0 :(得分:1)
对于Apache CXF,默认情况下,由于它不理解的元素,它也可能抛出异常。但是,您可以将“set-jaxb-validation-event-handler”的属性设置为“false” 在端点上,它将被忽略。
答案 1 :(得分:0)
所以,从我们的客户角度来看,我有点远程调试。我已经掌握了一切,并且能够使用较旧版本的Axis2(1.2)重现错误。我有的最新版本(1.5.4)似乎没有这个问题(使用ADB绑定)因此升级对于使用Axis的客户来说是一个很好的解决方法。不幸的是,我们的一些客户正在使用内置旧版本的ColdFusion,因此我将不得不弄清楚如何处理它们。