ule子请求失败

时间:2018-07-10 11:01:36

标签: mule mule-esb

我有一个全局http侦听器。我所有的API调用都使用了此侦听器。当API调用之一由于任何json解析问题而失败时?那么所有其他API调用也会失败。并且失败的api调用或代码流不会在其他api调用中使用。直到我们再次重新启动运行时(MULE ESB独立),所有后续API请求均失败。

遵循我们已实施的全局例外策略。

 <choice-exception-strategy name="globalException">
        <catch-exception-strategy when="#[exception.causedBy(org.mule.module.http.internal.request.ResponseValidatorException) &amp;&amp; message.inboundProperties.'http.status'==409]" doc:name="Catch Exception Strategy">
            <set-payload value="{&quot;error&quot;: &quot;File Not Downloaded.&quot;}" doc:name="Set Payload"/>
        </catch-exception-strategy>
        <catch-exception-strategy when="#[exception.causedBy(org.mule.module.http.internal.request.ResponseValidatorException)]" doc:name="Catch Exception Strategy">
            <set-payload value="{&quot;error&quot;: &quot;Your Search Did Not Fetch Anything!&quot;}" doc:name="Set Payload"/>
        </catch-exception-strategy>
        <catch-exception-strategy when="#[exception.causedBy(java.sql.SQLException)]" doc:name="Catch Exception Strategy">
            <set-payload value="{&quot;error&quot;: &quot;Malformed Query &quot;}" doc:name="Set Payload"/>
        </catch-exception-strategy>
        <catch-exception-strategy when="#[exception.causedBy(org.mule.api.transformer.TransformerException) &amp;&amp; 501==flowVars.errorCode]" doc:name="Catch Exception Strategy">
            <set-payload value="{&quot;error&quot;: &quot;File Not Downloaded. &quot;}" doc:name="Set Payload"/>
        </catch-exception-strategy>
        <catch-exception-strategy when="#[exception.causedBy(org.mule.api.transformer.TransformerException) &amp;&amp; 404==flowVars.errorCode]" doc:name="Catch Exception Strategy">
            <set-payload value="{&quot;error&quot;: &quot;Unauthorized To Download &quot;}" doc:name="Set Payload"/>
        </catch-exception-strategy>
        <catch-exception-strategy when="#[exception.causedBy(org.mule.api.transformer.TransformerException) &amp;&amp; 401==flowVars.errorCode]" doc:name="Catch Exception Strategy">
            <set-payload value="{&quot;error&quot;: &quot;Unauthorized Access &quot;}" doc:name="Set Payload"/>
        </catch-exception-strategy>
        <catch-exception-strategy when="#[exception.causedBy(org.mule.api.MessagingException) &amp;&amp; 127==flowVars.con_id]" doc:name="Catch Exception Strategy">
            <set-payload value="{&quot;error&quot;: &quot;Did Not Fetch Anything!&quot;}" doc:name="Set Payload"/>
        </catch-exception-strategy>
        <catch-exception-strategy when="#[exception.causedBy(org.mule.api.MessagingException)]">
            <set-payload value="{&quot;error&quot;: &quot;Invalid Credentials Cannot Proceed Further&quot;}" doc:name="Set Payload"/>
        </catch-exception-strategy>
        <catch-exception-strategy doc:name="Catch Exception Strategy">
            <set-payload value="{&quot;error&quot;: &quot;#[exception.getMessage().replaceAll(&quot;\'&quot;,&quot;&quot;).replaceAll(&quot;\&quot;&quot;,&quot;&quot;).replaceAll(&quot;\n&quot;,&quot;&quot;)]&quot;}" doc:name="Set Payload"/>
        </catch-exception-strategy>
    </choice-exception-strategy>

下面是我们解析输入json的方式。

<set-payload value="#[payload.data]" mimeType="application/json" doc:name="Set Payload"/>
        <set-variable  variableName="structure" value="#[json:structure]" doc:name="Variable"/>
        <set-variable variableName="jsonRequestData" value="#[payload]" doc:name="Variable"/>
        <expression-component doc:name="Expression"><![CDATA[String input = payload;    
payload = new org.json.JSONObject(input);]]></expression-component>
        <json:json-to-object-transformer returnClass="java.util.HashMap" doc:name="JSON to Object"/>

这不是在本地环境中发生的。有任何调试此问题的线索吗?

在此方面,您的帮助受到高度赞赏。

1 个答案:

答案 0 :(得分:0)

我正试图了解您的代码的行为方式,您能回答这些问题吗?

  1. 策略使用什么例外?您如何解析JSON ..

  2. 是某些转换器还是Dataweave?如果您使用的是Transformer, 您要处理org.mule.api.transformer.*异常吗?

  3. 如果您正在使用Dataweave,是否正在处理 'com.mulesoft.weave.*'例外?
  4. 您的代码是否处理默认的异常策略?

现在您可以尝试一下。在API调用期间,您是否使用了任何成功状态验证代码?应在HTTP组件->高级->中进行配置,并输入200..599

       <http:success-status-code-validator values="200..599"/>