Axis2禁用严格验证(wsdl2java中的-Eosv)允许什么,以及如何使其更加严格?

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页面和用法文本中

我使用的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页面和用法文本中所述,-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创建客户机是值得的。说明是