Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在出现异常时自动取消Spring任务_Spring_Exception Handling_Scheduled Tasks - Fatal编程技术网

在出现异常时自动取消Spring任务

在出现异常时自动取消Spring任务,spring,exception-handling,scheduled-tasks,Spring,Exception Handling,Scheduled Tasks,我在Spring应用程序上下文xml中定义了一个Spring任务: <task:scheduler id="myScheduler" pool-size="1"/> <task:scheduled-tasks scheduler="myScheduler"> <task:scheduled ref="MyClass" method="myMethod" fixed-delay="3000"/> </task:scheduled-tasks>

我在Spring应用程序上下文xml中定义了一个Spring任务:

<task:scheduler id="myScheduler" pool-size="1"/>

<task:scheduled-tasks scheduler="myScheduler">
    <task:scheduled ref="MyClass" method="myMethod" fixed-delay="3000"/>
</task:scheduled-tasks>


那么,我如何实现在发生异常时停止进一步执行任务,无论是在xml中还是在代码中捕获异常

我不认为使用
计划任务解决这个问题,当然可能是错误的

不过,还有另一种选择,配置:

<task:annotation-driven scheduler="scheduler"  />

<bean id="scheduler" class="org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler">
    <property name="poolSize" value="5" />
    <property name="errorHandler" ref="scheduledTaskErrorHandler" />
</bean>

<bean id="scheduledTaskErrorHandler" class="boo.ScheduledTaskErrorHandler" />

您好,我(在grails中)尝试过这个:
context.component-scan'('base-package':“sk.dvsk.messagesplitter”)
myScheduler(org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler){
'poolSize=1
errorHandler=ref('splittertaskhandler')
任务驱动的注释(myScheduler)
但有两个问题:异常时没有调用错误处理程序。我也无法关闭调度程序(将异常注入执行器和捕获器)通过调用ind shutdown或destroy方法。我不知道grails,你确定什么东西应该与java一起工作,它也应该与grails一起工作吗?你能用java检查一下吗?这些人认为与java一起工作也应该与groovy一起工作。我在一个独立的应用程序中进行了尝试,其中shutdown工作正常,但当一个e异常是从scheduled方法抛出的。(当我从scheduled方法调用shutdown时,它在这里工作,而不是在grails:s中)好的,所以如果我使用resource.xml而不是resource.groovy,则关机工作正常。可能resource.groovy在任务方面存在一些错误。
public class ScheduledTaskErrorHandler implements ErrorHandler {

@Override
public void handleError(Throwable t) {
        // do something, like shutdown the scheduler
}
}