码迷,mamicode.com
首页 > 编程语言 > 详细

Spring Schedule task 添加 error-hander

时间:2017-11-14 16:23:46      阅读:266      评论:0      收藏:0      [点我收藏+]

标签:注解   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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!