关于引入cron4j插件,重复执行定时任务的问题

最近在项目中使用了Jfinal框架,按照开发手册上的配置,引入了cron4j插件,用来执行定时任务。任务背景是在每天的14点发送短信,通知用户第二天活动相关事宜。现在遇到的问题是:定时任务会重复执行一次,即定时任务会执行两次。具体配置如下:

config.txt配置文件中配置定时任务信息如下:

1.png

2.png


在Config配置类中的configPlugin方法中配置如下:

3.png


之后是SMSTask类,implements Runnable抽象类,实现run()方法,在run()方法中执行发送短信方法。已排查过发送部分的代码逻辑,不存在重复调用发送短信方法的情况。


现在遇到的问题是:短信发送了两次,其他定时任务(task1,task2,task3)也出现类似情况,之前没注意,以为是偶然事件,今天通过短信平台管理后台发现短信发送了两次,才觉察之前task任务重复执行不是偶然事件。应该是定时调度任务执行了两次。

网上查找了一些资料,大多是spring框架有类似问题,分析原因,大多是cron插件被实例化两次,所以导致重复执行,目前没有看到Jfinal使用者反馈类似问题。由于初次使用Jfinal,对Jfinal框架和生命周期不是特别了解,所以不清楚是不是这个原因。请问社区各位技术大佬们,有遇到类似问题吗,是我配置有问题,导致实例化两次,还是由于Runnable中的run()方法使用不当导致重复执行呢?非常感谢各位能点拨一下,谢谢!


评论区

天朝子民

2018-09-26 18:05

用的tomcat吧 应用放在webapps下吧

天朝子民

2018-09-26 18:07

http://www.jfinal.com/share/527,这里有原因和解决办法