Groovy 未使用全局捕获异常策略

Groovy 未使用全局捕获异常策略,groovy,mule,mule-studio,mule-el,Groovy,Mule,Mule Studio,Mule El,我已经定义了一个全局异常策略,但是当Mule执行Groovy脚本时,它不会执行全局捕获异常策略,而是执行org.Mule.exception.DefaultSystemExceptionStrategy <!-- Define Global Catch Exception Strategy --> <catch-exception-strategy name="catchExceptionStrategy"> <logger level="ERROR" me

我已经定义了一个全局异常策略,但是当Mule执行Groovy脚本时,它不会执行全局捕获异常策略,而是执行org.Mule.exception.DefaultSystemExceptionStrategy

<!-- Define Global Catch Exception Strategy -->
<catch-exception-strategy name="catchExceptionStrategy">
    <logger level="ERROR" message="Component X: #[exception]" doc:name="Logger"/>
    <logger level="ERROR" message="Component X: E1_Error Service exited with errors. Please see the error log for details." doc:name="Logger"/>
</catch-exception-strategy>

Mule会恢复到默认的系统异常策略而不是流中定义的捕获异常策略,这有什么原因吗

日志如下:

DEBUG 2014-05-15 10:48:46,966 [[processes].returnInputFileConnector.receiver.01] org.mule.api.processor.LoggerMessageProcessor: Component X: Renamed Archived file in archive folder
INFO  2014-05-15 10:48:46,967 [[processes].returnInputFileConnector.receiver.01] org.mule.api.processor.LoggerMessageProcessor: Component X: L3_Done Service completed with no errors.
DEBUG 2014-05-15 10:49:00,030 [scheduler-processes_Worker-1] org.mule.api.processor.LoggerMessageProcessor: Component X: Begin batch process at 20140515104900
ERROR 2014-05-15 10:49:00,254 [scheduler-processes_Worker-1] org.mule.exception.DefaultSystemExceptionStrategy: 
********************************************************************************
Message               : Failed to invoke ScriptComponent{returnFlow2.component.1473216174}. Component that caused exception is: ScriptComponent{returnFlow2.component.1473216174}. Message payload is of type: AbstractConnector$7
Code                  : MULE_ERROR--2
--------------------------------------------------------------------------------
Exception stack is:
1. error=13, Permission denied (java.io.IOException)
  java.lang.UNIXProcess:-2 (null)
2. Cannot run program "/Users/edwchang/integration/.mule/apps/processes/classes/scripts/script.sh": error=13, Permission denied (java.io.IOException)
  java.lang.ProcessBuilder:1041 (null)
3. java.io.IOException: Cannot run program "/Users/edwchang/integration/.mule/apps/processes/classes/scripts/script.sh": error=13, Permission denied (javax.script.ScriptException)
  org.codehaus.groovy.jsr223.GroovyScriptEngineImpl:323 (http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/script/ScriptException.html)
4. Failed to invoke ScriptComponent{Flow2.component.1473216174}. Component that caused exception is: ScriptComponent{Flow2.component.1473216174}. Message payload is of type: AbstractConnector$7 (org.mule.component.ComponentException)
  org.mule.component.AbstractComponent:148 (http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/component/ComponentException.html)
--------------------------------------------------------------------------------
Root Exception stack trace:
java.io.IOException: error=13, Permission denied
    at java.lang.UNIXProcess.forkAndExec(Native Method)
    at java.lang.UNIXProcess.<init>(UNIXProcess.java:135)
    at java.lang.ProcessImpl.start(ProcessImpl.java:130)
    + 3 more (set debug level logging or '-Dmule.verbose.exceptions=true' for everything)
********************************************************************************
DEBUG 2014-05-15 10:48:46966[[processs].returnInputFileConnector.receiver.01]org.mule.api.processor.LoggerMessageProcessor:组件X:存档文件夹中重命名的存档文件
INFO 2014-05-15 10:48:46967[[进程].returnInputFileConnector.receiver.01]org.mule.api.processor.LoggerMessageProcessor:组件X:L3_完成服务,无错误。
调试2014-05-15 10:49:00030[scheduler-processes_Worker-1]org.mule.api.processor.LoggerMessageProcessor:Component X:在20140515104900开始批处理
错误2014-05-15 10:49:00254[scheduler-processes\u Worker-1]org.mule.exception.defaultsystemexception策略:
********************************************************************************
消息:调用ScriptComponent{returnFlow2.component.1473216174}失败。导致异常的组件是:ScriptComponent{returnFlow2.Component.1473216174}。消息负载的类型为:AbstractConnector$7
代码:MULE_错误--2
--------------------------------------------------------------------------------
异常堆栈是:
1.错误=13,权限被拒绝(java.io.IOException)
java.lang.UNIXProcess:-2(空)
2.无法运行程序“/Users/edwchang/integration/.mule/apps/processs/classes/scripts/script.sh”:错误=13,权限被拒绝(java.io.IOException)
java.lang.ProcessBuilder:1041(空)
3.java.io.IOException:无法运行程序“/Users/edwchang/integration/.mule/apps/processs/classes/scripts/script.sh”:错误=13,权限被拒绝(javax.script.ScriptException)
org.codehaus.groovy.jsr223.GroovyScriptEngineImpl:323(http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/script/ScriptException.html)
4.调用脚本组件{Flow2.component.1473216174}失败。导致异常的组件是:ScriptComponent{Flow2.Component.1473216174}。消息负载的类型为:AbstractConnector$7(org.mule.component.ComponentException)
org.mule.component.AbstractComponent:148(http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/component/ComponentException.html)
--------------------------------------------------------------------------------
根异常堆栈跟踪:
java.io.IOException:错误=13,权限被拒绝
位于java.lang.UNIXProcess.forkAndExec(本机方法)
位于java.lang.UNIXProcess(UNIXProcess.java:135)
在java.lang.ProcessImpl.start(ProcessImpl.java:130)
+3个以上(为所有内容设置调试级别日志或“-Dmule.verbose.exceptions=true”)
********************************************************************************

根据Mule文档,您的异常似乎是在系统级抛出的:

当抛出异常时,Mule调用系统异常策略 在系统级(即,当不涉及任何消息时,异常由系统异常策略处理)


由于您的异常来自您尝试执行的shell脚本,我相信这是导致此异常策略的原因,因为不涉及Mule消息

为了提供全局异常策略,这里是示例代码

    <!-- Define Global Catch Exception Strategy -->
<catch-exception-strategy name="catchExceptionStrategy">
    <logger level="ERROR" message="Component X: #[exception]" doc:name="Logger"/>
    <logger level="ERROR" message="Component X: E1_Error Service exited with errors. Please see the error log for details." doc:name="Logger"/>
</catch-exception-strategy>

<configuration defaultExceptionStrategy-ref="catchExceptionStrategy" />


因此,如果异常涉及一条消息(即来自流),那么它将由异常策略处理。否则,Mule的系统异常策略将处理该问题。

这是因为调度程序进程使用不同的捕获异常策略组件,并且需要为其显式配置一个组件吗?添加流配置以更好地了解该场景。