【问题标题】:How do I handle an exception and send back an HTTP response in mulesoft?如何处理异常并在 mulesoft 中发回 HTTP 响应?
【发布时间】:2015-12-03 20:32:19
【问题描述】:

在 Mulesoft 中,如何在 HTTP 驱动的流中获取全局捕获的异常并返回错误代码(而不是不返回任何内容?)基本上我有一个 HTTP 端点(请求/响应),然后生成一个数据库连接。如果 db 连接失败,它会被捕获,但 HTTP 响应会以无法识别的方式响应。例如,强制 500 的优雅方式是什么?谢谢!由

【问题讨论】:

    标签: mule


    【解决方案1】:

    很简单,对于Mule 3.5及更早的版本,你可以在全局异常块中配置HTTP响应生成器并返回状态HTTP码:-http://www.mulesoft.org/documentation/display/33X/HTTP+Response+Builder 和 http://www.mulesoft.org/documentation/display/current/HTTP+Response+Builder

    对于 Mule 3.6,您可以按照以下步骤操作:- http://www.mulesoft.org/documentation/display/current/HTTP+Listener+Connector

    【讨论】:

    • 谢谢!问题是,当我收到一个将其从流程中取出的连接异常时,有没有办法将其返回到至少发布正确的 HTTP 响应?
    • 我不确定您是否可以捕获连接异常.. 但在这里您可以检查并尝试建议的内容:- stackoverflow.com/questions/22359294/…
    【解决方案2】:

    如果您的意图只是捕获连接异常并从中发送有意义的消息,您可以尝试类似于以下内容。

    让以下代码成为您的选择例外策略的一部分:

    <catch-exception-strategy doc:name="Catch Exception Strategy" when="exception.causedBy(java.net.ConnectException)">
       <logger level="INFO" message="Caught Connect Exception" doc:name="Logger"/>
       <mulexml:xslt-transformer maxIdleTransformers="2" maxActiveTransformers="5" doc:name="XSLT" xsl-file="ExceptionTransformer">        
          <mulexml:context-property key="MyException" value="#[groovy:message.getExceptionPayload().getRootException.getMessage()]"/>
       </mulexml:xslt-transformer>        
    </catch-exception-strategy> 
    

    定义一个 XSLT 转换器,将您的有效负载转换为您想要的 XML。将异常消息作为上下文参数传递,并将其用于形成 XML。基本上,您可以在此 XSLT 中设计您的响应。是否提取并发送异常捕获的消息由您选择。

    异常转换器:

    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0"
         xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
      <xsl:param name="MyException"/>
      <xsl:template match="/">
        <GenericException>
         <faultcode>CE101</faultcode>
         <faultstring><xsl:value-of select="$MyException" /></faultstring>
        </GenericException>
      </xsl:template>
    </xsl:stylesheet>
    

    如果您使用mule 3.6,您也可以参考“返回错误消息”部分,这让生活变得更加简单。 http://www.mulesoft.org/documentation/display/current/Exception+Strategy+Most+Common+Use+Cases

    【讨论】:

      【解决方案3】:

      您可以使用批处理选项来保留异常,并在此基础上发回您的自定义响应。

      【讨论】:

        猜你喜欢
        • 2021-06-24
        • 2018-09-13
        • 2020-04-20
        • 1970-01-01
        • 2020-02-24
        • 1970-01-01
        • 2015-08-06
        • 2015-09-03
        • 1970-01-01
        相关资源
        最近更新 更多