我有一个Mule流程,它从服务中获取一个可能引发错误的oauth令牌。但是,即使最后有一个catch异常策略,该异常也不会被捕获。有人可以解释为什么没有发现异常吗?当我使用无效令牌通过SOAP UI发布XML以触发异常时,请求将转到流,但不会捕获异常。相反,我得到一个指示无效令牌的堆栈跟踪。这是流程:
<flow name="order-query">
<http:listener config-ref="HTTP_config"
path="order/request" doc:name="HTTP" />
<flow-ref name="oauth-token-service">
<cxf:jaxws-service doc:name="SPOP SOAP"
serviceClass="o.x.p.SpopWS">
<cxf:inInterceptors>
<spring:ref bean="HeaderInInterceptor" />
</cxf:inInterceptors>
<cxf:outInterceptors>
<spring:ref bean="faultOutInterceptor" />
<spring:ref bean="headerOutInterceptor" />
</cxf:outInterceptors>
<cxf:outFaultInterceptors>
<spring:ref bean="OutSoapFaultInterceptor" />
</cxf:outFaultInterceptors>
</cxf:jaxws-service>
<scripting:transformer>
<scripting:script engine="python">
...
</scripting:script>
<scripting:transformer>
<catch-exception-strategy>
<logger level="INFO" message=" Should be handled here #[payload]"/>
</catch-exception-strategy>
</flow>
答案 0 :(得分:0)
你确定没有抓住异常吗? catch-exception-strategy的默认行为是记录捕获的异常。这就是您在日志中看到堆栈跟踪的原因。
对于mule 3.8及以上版本:您可以使用复选框(日志例外)禁用/启用此行为:
或XML(logException=false
):
<catch-exception-strategy logException="false" doc:name="Catch Exception Strategy">
<logger level="INFO" doc:name="Logger"/>
</catch-exception-strategy>
for mule 3.7:看看这里:https://stackoverflow.com/a/42181054/804521