У меня есть веб-сервис camel-cxf. Я использую для обработки всех ошибок SOAP в механизме перехватчика ошибок SOAP CXF. Это хорошо работает.
Я подумал, что лучше обрабатывать исключение, созданное на уровне Camel на том же уровне, и написал простой сценарий onException, например:
onException (Exception.class). to ("прямой: MyWSExceptionHandler");
Всякий раз, когда генерируется настраиваемое исключение, я ожидал, что сработает onException (помните, что у меня тоже есть перехватчик ошибок SOAP), но это не так. CXF берет верх, и сообщение проходит через перехватчики, а не через верблюжий путь.
Это ожидаемый способ или я что-то делаю не так?
Мой перехватчик неисправностей CXF выглядит так:
@Component("SOAPFaultInterceptor")
public class SOAPFaultInterceptor extends AbstractPhaseInterceptor {
public SOAPFaultInterceptor() {
super(Phase.MARSHAL);
}
public void handleMessage(Message message) throws Fault {
// The message is coming here directly, instead of going to the route defined by onException.
}
}
Подскажите, пожалуйста, как это исправить? Я не хочу, чтобы исключение, созданное на слое Camel, оставляло этот слой без обработки.
Заранее спасибо.