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

问题描述 投票:0回答:1

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

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

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

apache-camel cxf
1个回答
0
投票

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

但是,正如您所写的,您已经启用了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进行验证。但是随后,您必须注意不能转换为对象的无效请求。

© www.soinside.com 2019 - 2024. All rights reserved.