我遇到了Fuse ESB 7.1.0的一个非常奇怪的问题:当一个cxf端点产生故障时,这个故障看起来不像是一个例外,所以我无法处理它使用doCatch构造。 cxf端点定义如下:
<cxf:cxfEndpoint id="cxf-ep" address="${ws.url}" serviceClass="MyServiceClass">
<cxf:properties>
<entry key="dataFormat" value="POJO" />
</cxf:properties>
</cxf:cxfEndpoint>
这是一个简短的代码片段,我希望有一个例外:
<doTry>
<to uri="cxf:bean:cxf-ep" />
<doCatch>
<exception>org.apache.cxf.interceptor.Fault</exception>
<handled>
<constant>true</constant>
</handled>
<to uri="log:exceptions?multiline=true&showCaughtException=true&showStackTrace=true&showBody=true&showProperties=true&showHeaders=true&level=ERROR" />
</doCatch>
</doTry>
我试图添加handleFault =&#34; true&#34;归因于驼峰上下文和路由,但没有成功。 具有类似参数和路由的捆绑包在Fuse ESB / ServiceMix 4.4.1上按预期工作,因此它看起来像回归或者新版本中的驼峰可能有所变化?
另一个有趣的时刻是,当一个Web服务器不可用时,camel会生成org.apache.cxf.interceptor.Fault,因此无法将其作为例外处理!
骆驼版:2.10.0.fuse-71-047