在异常时自动取消Spring任务

时间:2011-06-29 13:52:54

标签: spring exception-handling scheduled-tasks

我在spring app context xml中定义了一个Spring Task:

<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或代码中捕获异常?

1 个答案:

答案 0 :(得分:2)

我不认为使用scheduled-tasks可以解决这个问题,当然可能是错误的。

有一个替代方案,配置:

<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" />

errorHandler:

public class ScheduledTaskErrorHandler implements ErrorHandler {

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