如何处理异常并在mulesoft中发回HTTP响应?

时间:2015-04-01 02:36:33

标签: mule

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

3 个答案:

答案 0 :(得分:0)

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

对于Mule 3.6,您可以这样做: - http://www.mulesoft.org/documentation/display/current/HTTP+Listener+Connector

答案 1 :(得分:0)

如果你的意图是抓住连接异常并发送一条有意义的消息,我会尝试类似下面的内容。

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

<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中设计响应。您可以选择是否提取和发送异常捕获的消息。

ExceptionTransformer:

<?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>

您也可以参考&#34;返回错误消息&#34;如果你使用骡子3.6这使生活变得更加简单。 http://www.mulesoft.org/documentation/display/current/Exception+Strategy+Most+Common+Use+Cases

答案 2 :(得分:0)

您可以使用批处理选项来保存例外,并根据您可以发回自定义响应。