Axis2禁用严格验证(wsdl2java中的-Eosv)允许什么,以及如何使其更加严格?
我使用的SOAP服务在Axis2禁用严格验证(wsdl2java中的-Eosv)允许什么,以及如何使其更加严格?,java,axis2,Java,Axis2,我使用的SOAP服务在xsd:sequence中省略并重新排序XML元素,就像在xsd:any中一样 我尝试了wsdl2java-Eosv,但生成的代码拒绝了带有org.apache.axis2.AxisFault:org.apache.axis2.databinding.adbeexception:意外子元素的SOAP响应 使用-Eosv禁用哪种类型的检查? 有没有可能让它变得更不严格?在我处理Axis 2 v1.4.1时试图理解这一点,最后我浏览了源代码。如WSDL2Java页面和用法文本中
xsd:sequence
中省略并重新排序XML元素,就像在xsd:any
中一样
我尝试了wsdl2java-Eosv
,但生成的代码拒绝了带有org.apache.axis2.AxisFault:org.apache.axis2.databinding.adbeexception:意外子元素的SOAP响应
使用-Eosv
禁用哪种类型的检查?
有没有可能让它变得更不严格?在我处理Axis 2 v1.4.1时试图理解这一点,最后我浏览了源代码。如WSDL2Java页面和用法文本中所述,-E选项被传递给数据绑定模块-在-Eosv的情况下,“osv”子选项被传递给ADB模块。深入研究ADB的代码生成,我发现osv(OFF_STRICT_VALIDATION)选项仅在确定最小值时使用。从axis2 v1.4.1中的org.apache.axis2.schema.SchemaCompiler:
// if the strict validation off then we consider all elements have minOccurs zero on it
if (this.options.isOffStrictValidation()){
metainfHolder.addMinOccurs(referencedQName, 0);
} else {
metainfHolder.addMinOccurs(referencedQName, elt.getMinOccurs());
}
显然,依赖源代码来实现预期行为从来都不是明智之举,因为实现在不同版本之间会发生变化,但到目前为止,我还没有发现关于-Eosv选项要做什么的“官方”文档,除了模糊的声明“关闭严格验证”之外。我也没有找到任何其他方法来降低它的严格程度
有没有可能让它更不严格
-Eiu(对于ADB)-忽略意外元素,而不是抛出ADBEException
对于最新的Axis2 1.7.4,-Eiu确实抑制了异常,但客户端解析的webservice响应并不包含所有元素
如果您面临类似的问题,那么使用JiBX绑定而不是ADB创建客户机是值得的。说明是