不使用全局捕捉异常策略 [英] Global Catch Exception Strategy is not used

查看:227
本文介绍了不使用全局捕捉异常策略的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经定义了一个全局异常策略,但是当Mule执行我的Groovy脚本时,它不会执行Global Catch Exception Strategy,而是执行org.mule.exception.DefaultSystemExceptionStrategy。

 <! - 定义全球渔获豁免策略 - > 
< catch-exception-strategy name =catchExceptionStrategy>
< logger level =ERRORmessage =Component X:#[exception]doc:name =Logger/>
< / catch-exception-strategy>

是否有原因让Mule恢复到默认的系统异常策略,而不是定义的catch异常策略

  DEBUG 2014-在流程中?



05-15 10:48:46,966 [[进程] .returnInputFileConnector.receiver.01] org.mule.api.processor.LoggerMessageProcessor:组件X:重命名归档文件夹中的归档文件
INFO 2014-05-15 10: 48:46,967 [[processes] .returnInputFileConnector.receiver.01] org.mule.api.processor.LoggerMessageProcessor:组件X:L3_Done服务已完成且没有错误。
DEBUG 2014-05-15 10:49:00,030 [scheduler-processes_Worker-1] org.mule.api.processor.LoggerMessageProcessor:组件X:开始批处理20140515104900
错误2014-05-15 10:49:00,254 [scheduler-processes_Worker-1] org.mule.exception.DefaultSystemExceptionStrategy:
************************** ************************************************** ****
消息:无法调用ScriptComponent {returnFlow2.component.1473216174}。导致异常的组件是:ScriptComponent {returnFlow2.component.1473216174}。消息有效负载的类型为:AbstractConnector $ 7
代码:MULE_ERROR - 2
---------------------------- -------------------------------------------------- -
异常堆栈是:
1. error = 13,Permission denied(java.io.IOException)
java.lang.UNIXProcess:-2(null)
2。无法运行程序/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:无法运行程序/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.无法调用ScriptComponent {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)
------------------------------------- -------------------------------------------
根异常堆栈trace:
java.io.IOException:error = 13,Permission denied $ b $ at java.lang.UNIXProcess.forkAndExec(Native Method)
at java.lang.UNIXProcess。< init>( UNIXProcess.java:135)
在java.lang.ProcessImpl.start(ProcessImpl.java:130)
+ 3以上(设置调试级别日志或'-Dmule.verbose.exceptions = true' )
********************************************* ***********************************


解决方案

根据Mule文档 here


Mule调用系统例外策略当在系统级抛出
的异常时(例如,当没有消息时,异常由系统异常策略处理)。

由于你的异常来自你尝试执行的shell脚本,我相信这是由于这个异常策略导致的,因为没有涉及到Mule消息。

I have defined a global exception strategy, but when Mule executes my Groovy script it does not execute the Global Catch Exception Strategy, but rather executes the 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>

Is there a reason why Mule would revert to the default system exception strategy rather than the catch exception strategy defined in the flow?

Log provided below:

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)
********************************************************************************

解决方案

It would appear that your exception is being thrown at the system-level, according to the Mule documentation here:

Mule invokes a System Exception Strategy when an exception is thrown at the system-level (i.e., when no message is involved, exceptions are handled by system exception strategies).

Since your exception has come from the shell script your trying to execute, I believe it's resulting to this exception strategy because no Mule message is involved.

这篇关于不使用全局捕捉异常策略的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆