标签:注解 override public actor cep 自己的 调度 ref 信息
原因来自于系统有两天定时任务执行失败,查阅日志时,只能看到
Unexpected error occurred in scheduled task.
在Spring 源码中,可以从TaskUtils
中看出端倪,Spring 默认提供的定时任务处理器是
LoggingErrorHandler
private static class LoggingErrorHandler implements ErrorHandler {
private final Log logger = LogFactory.getLog(LoggingErrorHandler.class);
@Override
public void handleError(Throwable t) {
if (logger.isErrorEnabled()) {
logger.error("Unexpected error occurred in scheduled task.", t);
}
}
}
那么为了能够在定时任务发生异常时看到完整的异常信息,需要我们特别配置下
主要的工作还是在Spring.xml
一般地,想要使用Spring基于注解的定时任务,我们只需要在XML文件中配置
<task:annotation-driven/>
所以加入自己的配置也很简单,只需要展开即可。默认情况下,Spring 启用的是 org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler
,我们不改变这个依旧配置
ThreadPoolTaskScheduler
为任务调度
<task:annotation-driven scheduler="default" />
//加入一些个性配置,比如线程池大小
<bean name="taskDefault" class="org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler">
<property name="poolSize" value="5"/>
//配置自定义异常处理
<property name="errorHandler" ref="scheduleTaskErrorHandler"/>
</bean>
//注册到Spring 容器
<bean name="scheduleTaskErrorHandler" class="com.ScheduleTaskErrorHandler"/>
ScheduleTaskErrorHandler.java
@Override
public void handleError(Throwable throwable) {
logger.error("Schedule task throw exception msg is {}");
throwable.printStackTrace();
}
Spring Schedule task 添加 error-hander
标签:注解 override public actor cep 自己的 调度 ref 信息
原文地址:http://www.cnblogs.com/biig/p/7832891.html