Инициируемое завершение, а не исключение
Это вариант вопроса, который я задал в CXF-компоненте Camel, не обращающем внимания на ExException(Exception.class)
Я реализовал решение, предложенное Клаусом выше, но оно не работает. Я не понимаю, почему onCompletion запускается, когда я установил HandleFault = true на глобальном уровне.
Я изменил код много, следовательно, задавая тот же вопрос, но с несколькими изменениями.
Мой маршрут выглядит следующим образом: Маршрут 1(конечная точка camel-cxf) -> Маршрут 2(прямой) -> Маршрут 3(прямой). В маршруте 3 я выбрасываю исключение WebApplicationException(я снова оборачиваю это в MyWSException), которое является исключением времени выполнения.
Я установил для HandleFault значение true на уровне контекста.
getContext().setHandleFault(true);
Мой дескриптор onException на глобальном уровне выглядит так:
onException(Exception.class, MyWSException.class)
.process(new Processor(){
@Override
public void process(Exchange exchange) throws Exception {
System.out.println("In onException Exception and IServicesWSException");
}
})
.to("direct:IServicesWSExceptionHandler");
У меня также есть локальный (Маршрут конкретного), который выглядит следующим образом.
from("cxf:bean:ordermanagementservice")
.routeId("ordermanagementservice")
.startupOrder(2)
.onException(Throwable.class)
.handled(true)
.setBody().simple(PROCESS_RESULT_FAILED)
.process(new Processor(){
@Override
public void process(Exchange exchange) throws Exception {
exchange.getIn().setHeader(AuditConstants.AUDIT_MAP_KEY.getValue(), AuditParam.AUDIT_ATTR_STATUS_ORDER);
}
})
.beanRef("AuditManager", "audit")
.to("direct:IServicesWSExceptionHandler")
.end()
Мой onCompletion(конкретный маршрут) выглядит следующим образом.
.onCompletion()
.setBody().simple(PROCESS_RESULT_SUCCESS)
.process(new Processor(){
@Override
public void process(Exchange exchange) throws Exception {
exchange.getIn().setHeader(AuditConstants.AUDIT_MAP_KEY.getValue(), AuditParam.AUDIT_ATTR_STATUS_ORDER);
}
})
.beanRef("AuditManager", "audit")
.end()
Пожалуйста помоги. Я прошу прощения, если вопрос кажется повторением. Очень отчаянно
Заранее спасибо.