目前用于检查传入的XML消息是否在Mule中形成良好的最佳方法是什么?
例如,如果我将错误形成的(或非)XML发送到此选项,则Mule会抛出错误并且流程停止:
<choice>
<when expression="#[xpath('fn:count(//event/@publicID)') != 0]">
....
错误如下:
[Fatal Error] :1:1: Content is not allowed in prolog.
java.lang.RuntimeException: org.mule.api.MuleRuntimeException: Failed to evaluate XPath expression: "fn:count(//event/@publicID)"
at org.mule.module.xml.el.XPathFunction.call(XPathFunction.java:50)
另外,有没有办法在流程中捕获并忽略此错误?我按照文档尝试了异常策略,没有在哪里。
谢谢, 杰夫
答案 0 :(得分:0)
你现在可能已经解决了这个问题,但是在mule xml模块中有一个方便的过滤器可能会有所帮助:
<mulexml:is-xml-filter />
这会过滤掉非/坏的xml。您可以将它与message-filter一起用于路由到dlq或抛出异常等。
此外,我可以按如下方式捕获该异常:
<choice-exception-strategy>
<catch-exception-strategy when="#[exception.causedBy(org.mule.api.MuleRuntimeException)]">
<logger level="ERROR" message="not xml" />
</catch-exception-strategy>
</choice-exception-strategy>