关于spring定时任务被多次调用的问题


在项目开发中,难免会用到定时任务,如果你的项目中用了spring这个框架,那么恭喜你,你的定时任务的创建将变得无比简单。

代码中只需要一个 @Scheduled标签,然后配置对应的执行频率即可

 pasting

@Scheduled(cron="0/60 * *  * * ? ")   //60秒执行一次
@Override
public void checkLoginStatus() {
System.out.println("process");
}

如上代码,即可实现定时任务。 

但是今天在代码从本地提交到linux环境时出现了一个小问题,在本地Windows环境中,定时任务执行正常,但是在Linux环境,会出现重复执行的情况。

经过在网络上的问题排查,找到原因了。

我这边的问题主要在tomcat的配置上,在tomcat的配置中,appBase的值与Context配置中path的值存在重复的问题,导致每次定时任务都会被调用两次,这里要做的就是把host中appBase中的值删掉即可。

如果这种方法不可行,那么就需要检查自己的spring配置文件,是否已经配置了定时任务,如果配置文件中已经配置了定时任务,代码中又使用了@Scheduled标签也会导致重复调用的问题。