Apache CXF停止针对服务器端XSD验证错误的事务传播

我们拥有基于JMS的CXF SOAP服务,并且已使用schema-validation-enabled属性启用了XSD验证。使用此配置,对于所有类型的错误,都会发生事务回滚。我们希望停止针对XSD验证错误的回滚,并允许针对运行时错误的回滚。

我们添加了onException(ValidationException.class).handled(true),但对于通过JMS进行的SOAP,当发生验证异常时,不会执行以下代码,并且会在其自身之前调用回滚。

Apache CXF中是否有一种方法,我们可以根据异常类型控制回滚-不对异常的xml验证类型进行回滚?

lvyinkiller 回答:Apache CXF停止针对服务器端XSD验证错误的事务传播

您的问题所包含的信息很少。

但是,正如您所写的,您已启用了CXF的schema-validation-enabled属性。因此,如果请求不是架构有效的,则框架将停止该请求。该请求未达到您的代码。我猜客户从CXF收到Soap Fault。

在CXF中,您可以自定义很多内容!您甚至可以编写自己的JAXB验证器,以替换或扩展CXF之一并根据需要处理无效请求。 。请参阅简单示例this question。然后,您可以像这样配置它。

<jaxws:properties>
        <entry key="schema-validation-enabled" value="true" />
        <entry key="jaxb-validation-event-handler">
            <bean class="com.your.package.MyCustomHandler"></bean>
        </entry>
</jaxws:properties>

Interceptors也完成了许多CXF定制。但是我也不知道它是否也可以用于验证。

当然,您也可以在CXF中禁用模式验证,并使用Camel Validator进行验证。但是随后,您必须注意不能转换为对象的无效请求。

本文链接:https://www.f2er.com/3131023.html

大家都在问