Apache CXF остановит распространение транзакций для ошибок проверки XSD на стороне сервера - PullRequest
0 голосов
/ 10 ноября 2019

У нас есть служба CXF SOAP поверх JMS, и мы включили проверку XSD с помощью свойства schema-validation-enabled. При такой конфигурации для всех типов ошибок происходит откат транзакции. Мы хотим остановить откат для ошибки проверки XSD и разрешить откат для ошибок времени выполнения.

Мы добавили onException (ValidationException.class) .handled (true), но для SOAP через JMS, когда происходит исключение проверки, ниже кодане выполняется, и откат вызывается перед самим собой.

есть ли способ в Apache CXF, мы можем управлять откатом на основе типа исключения - чтобы не было отката для типа проверки xml исключения?

1 Ответ

0 голосов
/ 13 ноября 2019

Ваш вопрос содержит довольно мало информации.

Но, как вы писали, у вас включено свойство schema-validation-enabled CXF . Следовательно, если запрос недопустим, схема останавливает его. Запрос не доходит до вашего кода. Я полагаю, что клиент получает ошибку мыла от CXF.

В CXF вы можете многое настроить! Вы можете даже написать свой собственный валидатор JAXB , который заменяет или расширяетодин из CXF и обрабатывает недействительные запросы, как вы хотите. См. Для простого примера этот вопрос . Затем вы можете настроить его следующим образом.

<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>

Большая часть настроек CXF также выполняется с помощью Interceptors . Но я не знаю, работает ли он также для проверки.

И, конечно, вы также можете отключить проверку схемы в CXF и выполнить проверку с помощью Camel Validator . Но тогда вам нужно позаботиться о недопустимых запросах, которые нельзя преобразовать в объекты.

...