Apache camel 当服务调用返回soap:fault时访问整个soap:body

Apache camel 当服务调用返回soap:fault时访问整个soap:body,apache-camel,cxf,soapfault,Apache Camel,Cxf,Soapfault,我正在构建一个将SOAP请求发送到Web服务的路由。为了实现这一点,我编写了以下代码 .doTry() .inOut(getEndpointDocumentWS()) .log("Response WHEN OKAY: ${body}") .process(Document_WS_REPLY_PROCESSOR) .endDoTry() .doCatch(Exception.class) .log(LoggingLevel.INFO, "SOAP REPLY WI

我正在构建一个将SOAP请求发送到Web服务的路由。为了实现这一点,我编写了以下代码

.doTry()
    .inOut(getEndpointDocumentWS())
    .log("Response WHEN OKAY: ${body}")
    .process(Document_WS_REPLY_PROCESSOR)
.endDoTry()
.doCatch(Exception.class)
    .log(LoggingLevel.INFO, "SOAP REPLY WITH FAULTMESSAGE")
    .log("Response ON ERROR FAULT: ${body}")
    .process(Document_WS_REPLY_ERROR_PROCESSOR)
.end();
当服务响应为“OK”时,一切都按计划进行。否则,当服务响应是soap:Fault时,我无法访问所有响应(我使用soapUI模拟soap:Fault响应)

我可以通过获取EXCEPTION\u Capture属性来访问soap:fault的一小部分。 指令

.log("Response ON ERROR FAULT: ${body}")
没有任何数据

我可以做什么不同的事情来访问所有的而不仅仅是faultstring

异常异常=exchange.getProperty(exchange.Exception\u被捕获, 例外情况(类别)

根据这个答案:

Camel的OneException仅在出现异常时触发。肥皂 故障表示为故障标志为true的消息

您可以在CamelContext上设置handleFault=true,然后 将SOAP错误消息转换为OneException 能对……作出反应

假设您尚未配置
handleFault=true
,那么您的异常处理程序正在运行就很奇怪了。可能是发生了导致异常处理程序运行的其他异常,而不是您要查找的故障

如果您已经配置了
handleFault=true
,那么除了检查调试器中的数据对象以查看是否可以找出发生了什么以外,我没有任何建议。(如果您不知道,可以向异常处理程序中添加
处理器
,并在
处理器
中插入断点。断点在路由定义中不起作用,因为路由定义仅在初始化时运行。)