在我们定义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来测试它,以便使用属性介体进行排序。
答案 0 :(得分:0)
4.8.0中的PropertyMediator(也在HeaderMediator中)存在错误,因此异常处理不当。 这在patch0781中得到修复。 如果您无法应用此修补程序,则有一种解决方法。 只需添加一个尝试读取XML有效内容的脚本中介。这将触发错误和正确的错误处理,因此将执行faultSequence。 示例
<script language="js"><![CDATA[
mc.getPayloadXML(); ]]></script>