时,这一问题与前一个Apache的骆驼CXF空响应:Apache Camel multicast, exception and Aggregation strategy处理异常
我觉得问上一个问题,当我missunderstood问题。
我尝试处理我在路由中抛出的异常。
.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:[email protected]]
我想这有什么不对我使用的InOut图案或类似的...
尝试在onException子句中调用setBody(常量(“ERROR”))或变换(常量(“ERROR”)),而不是.inOut(...)。这至少起作用吗? –
CXF端点处于POJO模式,如果我有这种转换,我得到一个编组错误:注意:Interceptor for {http://www.access-commerce.com/cameleonWS/cart/}CartService#{http: www.access-commerce.com/cameleonWS/cart/}addXML引发异常,现在展开为 org.apache.cxf.interceptor.Fault:编组错误:类java.io.ByteArrayInputStream及其任何超类都是已知的上下文。 – Franch