今天在学习quartz的时候,发现每次调试时都会输出版本更新的提示。但是自己没有写版本更新的代码,心想肯定是quartz把定时检查的代码写入到了jar包中。仔细一找,发现有个UpdateChecker的类,原来就是这个类在捣蛋,而且它是继承了TimerTask的类,要是在实际应用中它一直去检查版本更新,那多么浪费性能。
经过查看代码引用,发现是在初始化QuartzScheduler类的时候启用了这个定时检查的定时器。它是根据以下代码判断是否初始化这个定时器:
private boolean shouldRunUpdateCheck() {
if(resources.isRunUpdateCheck()
&& !Boolean.getBoolean(StdSchedulerFactory.PROP_SCHED_SKIP_UPDATE_CHECK)
&& !Boolean.getBoolean("org.terracotta.quartz.skipUpdateCheck")) {
return true;
}
return false;
}
经过上面的代码可以看出,只要我们在配置文件中配置一个org.quartz.scheduler.skipUpdateCheck为false的参数既可让它不再启这个定时任务了。
解决办法:用winrar打开quartz-all-2.0.2.jar,在org\quartz下找到quartz.properties。然后在最后一行加入以下代码并保存。
org.quartz.scheduler.skipUpdateCheck: true