为什么在发生异常时WSO2 PropertyMediator不会触发faultSequence?

时间:2015-03-18 15:39:46

标签: xslt wso2esb synapse

在我们定义faultSequnce的代理或API序列中,该序列中的每个异常都应触发faultSequence。

示例

    <target faultSequence="sub_handelFault_1.0">
    <inSequence onError="sub_handelFault_1.0">
        <property name="originalRequest" expression="$body/*[1]" type="OM" />

当xslt介体抛出异常时(例如,当请求消息不是格式良好的XML时),将通过正确的错误处理触发faultSequence。

但令人惊讶的是,PropertyMediator会抛出异常,它永远不会触发faultSequence。序列的执行是无声的,请求消息丢失。 这对于异步消息(JMS)来说非常危险。

您可以通过发送格式不正确的XML来测试它,以便使用属性介体进行排序。

1 个答案:

答案 0 :(得分:0)

4.8.0中的PropertyMediator(也在HeaderMediator中)存在错误,因此异常处理不当。 这在patch0781中得到修复。 如果您无法应用此修补程序,则有一种解决方法。 只需添加一个尝试读取XML有效内容的脚本中介。这将触发错误和正确的错误处理,因此将执行faultSequence。 示例

<script language="js"><![CDATA[ 
     mc.getPayloadXML(); ]]></script>