Пустой ответ Apache Camel CXF при обработке исключения - PullRequest
0 голосов
/ 16 сентября 2011

Этот вопрос относится к предыдущему: Многоадресная рассылка 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 или что-то вроде ...

1 Ответ

0 голосов
/ 17 сентября 2011

Удалите вызов метода handled ().Это предотвращает фильтрацию исключения до конечной точки CXF.

...