Spring @Scheduled 执行两次 问题总结

参考:http://bbs.csdn.net/topics/391054322

使用 Spring @Scheduled 注解实现定时任务: 

1:servlet.xml中添加了 task命名空间 和 
XML/HTML code
?
1
< task:annotation-driven  />

2:使用@Service 注解调度类,添加了@Scheduled 方法:
Java code
?
1
2
3
4
5
6
7
@Service ( "scheduleService" )
public  class  ScheduleService {
         @Scheduled (cron= "0 30 23 * * ?" )
         public  void  scheduleTask(){
                  logger.info( "execute one~~" );       // <----这里会执行两次
         }
}


令人费解的是:定时任务在线上服务器上总是执行两次(定时更新数据的操作啊!!!!)
在本机调试和测试机上测试都只执行一次,原因不明
注:在网上找了下原因,说的都是实例化两次的原因,可是对比了网上说的的情形,和我当前遇到的根本不一致~~


网上搜罗了各种原因,最终发现问题在tomcat配置中;现把可能导致这种问题的情况列出来分享:

1.检查扫描注解配置。

如果xml中配置了一次,注解又配置了一次,相当于创建了两个实例,那么就会出现执行两次的情况;


2.查询tomcat 的server.xml文件里的何配置

  和节点如何配置的,如果多个context配置的同一个工程,那么tomcat就会加载两次该工程,任务执行两次也就是正常的了;

3如何部署的项目

是否打包war放入了webapps下  又设置了server.xml里的context指定了该war包





你可能感兴趣的:(Spring)