cron4j,步长的设置无法生效。

cron4j,步长的设置无法生效:


cron4j=trWeeklyTask,trMonthTask


##\u6BCF\u5468\u56F4\u4E94\u4E0B\u5348\u4E09\u70B9

trWeeklyTask.cron= 2/2 * * * *

trWeeklyTask.class= com.osm.timereport.auto.WeeklyTask

trWeeklyTask.daemon=true

trWeeklyTask.enable=true


##\u6BCF\u4E2A\u81EA\u7136\u6708\u6700\u540E\u4E00\u4E2A\u5DE5\u4F5C\u65E5

trMonthTask.cron= 1/3 * * * *

trMonthTask.class= com.osm.timereport.auto.MonthTask

trMonthTask.daemon= true

trMonthTask.enable= true

只在每小时的1,2分时有反应,其它时间都没有反应。

如果换成逗号,还是可以的。

目前就是这个步长的不行。


评论区

ihss23

2017-10-31 14:10

@jfinal,麻烦帮看看。

ihss23

2017-10-31 14:11

@Override
public void configPlugin(Plugins me) {

// add DATABASE
DataBaseConfig.conf(me);

// 配置Cron4j插件
Cron4jPlugin cp = (new Cron4jPlugin(PropKit.use("cron4jt.properties"), "cron4j"));

me.add(cp);

}

ihss23

2017-11-08 17:12

还有另一个问题:
invalid pattern "1 16 ? * 6". Error parsing days of month field: invalid field "?", invalid element "?", invalid range, invalid value "?", invalid integer value.

ihss23

2017-11-08 17:14

它不认这个问号。

ihss23

2017-11-08 17:14

@JFinal , 麻烦波总帮小弟看看。

ihss23

2017-11-08 17:18

好像LW也认不了。

JFinal

2017-11-08 17:23

@ihss23 Cron4jPlugin 仅仅是对 cron4j 这个第三方做了一次极薄封装,而 cron 表达式完全保留了 cron4j 的标准,并没有任何改变

而这个表达式的用法在 jfinal 手册中列出了每一项细则,非常明确的是没有 "?" 号这么一说,所以当然不会支持问号

这里是 cron4j 官方文档,可以参考一下: http://www.sauronsoftware.it/projects/cron4j/manual.php

ihss23

2017-11-08 17:24

再次看了手册,上面好像没有写到有W,?这两个符号。不支持吗?@JFinal

JFinal

2017-11-08 17:24

看一下 jfinal 手册第九章《第九章 Cron4jPlugin》,里面有一个列表,每一项使用都有说明

ihss23

2017-11-08 17:25

那么工作日应该怎么表达呢?

ihss23

2017-11-08 17:32

@JFinal ,多谢你的及时回复。我这风速慢,没有及时刷新你的回复,所以没看到。

JFinal

2017-11-08 17:40

@ihss23 关于 cron 表达式,这个是 jfinal 无法控制的,因为 jfinal 不想去发明一套新的 cron 语法,会给大家带来学习成本

只要大家会用已经存在多年的 cron 语法,那么就会用 Cron4jPlugin 这个组件

JFinal

2017-11-08 17:42

@JFinal 再注意看一下 jfinal 手册第九章,第二小节,其中有这么一段话:

以上规则不是 JFinal 创造的,是通用的 cron 表达式规则,如果开发者本身具有这方面的知识,用起来会得心应手。原始文档链接: http://www.sauronsoftware.it/projects/cron4j/manual.php

ihss23

2017-11-09 13:19

我不知说什么好。
随便百度一个:
https://www.cnblogs.com/junrong624/p/4239517.html
http://cron.qqe2.com/

JFinal

2017-11-09 13:23

@ihss23 那个是 quartz 的 cron 表达式, cron4j 与此不同:
http://www.sauronsoftware.it/projects/cron4j/manual.php

JFinal

2017-11-09 13:27

@ihss23 cron 更早是出现在 unix、linux 上的标准,我记得 unix、linux 上的 cron 表达式标准是没有问号这些东西的,也只有 5 部分,而不是 quartz 的 6 部分:
https://www.cnblogs.com/intval/p/5763929.html
https://www.cnblogs.com/maybo/p/5183753.html

JFinal

2017-11-09 13:29

@ihss23 注意看这个链接中有一个图片标识了 cron 的格式:
https://www.cnblogs.com/intval/p/5763929.html

图片链接为:
http://images2015.cnblogs.com/blog/513841/201608/513841-20160812102124078-171184924.png

JFinal

2017-11-09 13:34

@ihss23 你要设置步长,得设置为这样:
trMonthTask.cron= */3 * * * *
上面的表示每三分钟执行一次

也可以指定的区域来设置步长:
trMonthTask.cron= 10-20/3 * * * *
上面的表示在 10 到 20 这个分钟区域内,每三分钟执行一次,下载最新版本的 jfinal 手册,Cron4jPlugin 章节中的例子有过更新,有助于更好掌握用法

ihss23

2017-11-09 13:38

@JFinal,多谢指教。原来是有两个不同的。看来是用回quartz了。

JFinal

2017-11-09 13:39

@ihss23 cron4j 是按 unix、linux 几十年来的标准走的,quartz 是新搞了一套规则出来

ihss23

2017-11-09 13:52

@JFinal,再次多谢。

热门反馈

扫码入社