JBoss.orgCommunity Documentation
任务调度服务为开发者提供分布式定时服务,用来定时触发开发者的特定动作。应用开发者通过指定一个URL、时间表和相关参数来创建一个任务,平台将按照时间表的规则调用用户指定的URL。 任务调度服务通过执行HTTP请求定时触发应用执行特定的事务,HTTP请求支持GET/POST;一个任务最长执行时间为10分钟。
应用开发者如需要使用定时任务服务,则需要在应用包中"/src/main/resources"目录下创建timingTask.json文件。在文件中配置定义任务信息,整个配置文件内容为JSON数组对象。 应用安装到平台上,定时任务将自动创建与维护。timingTask.json文件中的任务将于平台上任务信息一致,如果文件为空,则以前的任务将被删除。 timingTask.json文件例子如下:
[ { "taskName": "taskName01", "cron": "20 * * * * * *", "url": "/app/aaa1", "des": "这是一个测试任务1", "method": "POST", "param": "a=11&b=22&c=33" }, { "taskName": "taskName02", "cron": "*/20 * * * * * *", "url": "/app/aaa2", "des": "这是一个测试任务2", "method": "GET", "param": "" } ]
创建相关属性说明
taskName:任务标识,在整个应用中需要保证唯一性。且任务名称只能有字母和数字组成。必填。 cron:CRON表达式,定义任务执行的时间规则。必填。 * * * * * * * | | | | | | + - - - - Year(1970–2099) | | | | | + - - - - Day of week(0-6) | | | | + - - - - Month(1-12) | | | + - - - -Day of Month(1-31) | | + - - - - - -Hours(0-23) | + - - - - - -Minutes(0-59) + - - Seconds(0-59) f1 f2 f3 f4 f5 f6 f7 *其中f1秒, f2 是表示分钟,f3 表示小时,f4 表示一个月份中的第几日,f5 表示月份, f6 表示一个星期中的第几天,f7表示年。 *当 f1 为 * 时表示每秒钟都要执行 ,f2 为 * 时表示每分钟都要执行,其余类推 。 *当 f1 为 a-b 时表示从第 a 秒到第 b 秒这段时间内要执行,f2 为 a-b 时表示从第 a 分钟到第 b 分钟都要执行,其余类推 。 *当 f1 为 */n 时表示每 n 秒钟个时间间隔执行一次,f2 为 */n 表示每 n 分钟个时间间隔执行一次,其余类推 。 *当 f1 为 a, b, c,... 时表示第 a, b, c,... 秒要执行,f2 为 a, b, c,... 时表示第 a, b, c...个分钟要执行,其余类推 *week和day都有,则取交集。 url:用户要执行的任务的地址;即为应用任务的URL。例如:/aaa/bbb。必填。 des:任务描述。选填。 method:应用任务的URL执行方法,GET或者POST。必填。 param:调用应用URL时传入参数,只有当method为POST才生效,GET时忽略。
当定时任务执行URL请求时,应用将被调用到,因此定时任务执行的URL需要排除身份、会话验证。 例如定时任务执行URL为:/AAA/BBB ;则需要在servletContext.xml将"/AAA/BBB"排除拦截
<!-- 定义 Web 拦截器 --> <mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/pc/**" /> <bean class="com.epicsaas.framework.tenant.TenantSessionInterceptor" > <property name="pattern" value="(.*login.*)|(.*error.*)|(.*static.*)| (.*common.*)|(.*register.*)|(.*checkcode.*)|(.*topmanager.*)|(/AAA/BBB.*)"/> <property name="redirectURL" value="${baseComponentPath}"/> </bean> </mvc:interceptor> </mvc:interceptors>