在Mulesoft中,如何在HTTP驱动的流中获取全局捕获的异常并返回错误代码(而不是返回任何内容?)基本上我有一个HTTP端点(请求/响应),然后生成一个数据库连接。如果数据库连接失败,则会捕获,但HTTP响应会响应无法识别的内容。例如,强制500的优雅方式是什么?谢谢! BY
答案 0 :(得分:0)
这很简单,对于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
答案 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)
您可以使用批处理选项来保存例外,并根据您可以发回自定义响应。