Этот вопрос относится к предыдущему: Многоадресная рассылка Apache Camel, стратегия исключения и агрегации
Мне кажется, я неправильно понял проблему, задавая предыдущий вопрос.
Я пытаюсь обработать исключение, которое я бросил в моем маршруте.
.filter(not(successResponsePredicate))
.to("log:com.sdmo.Error?level="+LOG_LEVEL)
.transform(simple("Erreur lors de l'appel copyItem"))
.process(new ConvertCartResponseProcessor())
.throwException(new Exception("copyItemError"))
.end()
Исключение обрабатывается с помощью этого кода:
onException(java.lang.Exception.class).handled(true).inOut("direct:thrownError");
from("direct:thrownError")
.to("log:com.sdmo.output?level="+LOG_LEVEL);
Мой маршрут запускается конечной точкой cxf, но когда маршрут обработки исключений достигнут, тело, возвращаемое моему клиенту WS, пусто.
Я сделал несколько проверок в режиме отладки и в журнале, чтобы убедиться, что код обработки исключений устанавливает ответ, и если я заменяю тело (тип POJO) на простой тип, при отправке ответа я получаю непонятную ошибку.
Последняя строка, записанная перед ответом, показывает, что тело хорошо определено:
INFO: Exchange[ExchangePattern:InOut, BodyType:com.access_commerce.cameleonws.cart.AddXMLResponse, Body:com.access_commerce.cameleonws.cart.AddXMLResponse@59dc73f9]
Я думаю, что-то не так с моим использованием шаблона InOut или что-то вроде ...