定时任务 Quartz调度(采用配置文件)
来源:互联网 发布:json文件怎么打开 编辑:程序博客网 时间:2024/05/18 18:43
采用配置文件方式的Quartz调度:
1、所需的第三方包
commons-beanutils.jar
commons-collections-3.2.jar
commons-digester.jar
commons-logging.jar
jta.jar
quartz.jar
2、自定被调度的Job
package com.allen;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
public class MyJob implements Job {
/**
* 需要定时调度的方法
*/
public void execute(JobExecutionContext arg0) throws JobExecutionException {
System.out.println("我是被定时调度的方法啊,当前时间为:"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SS").format(new Date()));
}
}
3.在 web.xml加入:
<servlet>
<servlet-name>QuartzInitializer</servlet-name>
<servlet-name>QuartzInitializer</servlet-name>
<servlet-class>org.quartz.ee.servlet.QuartzInitializerServlet</servlet-class>
<init-param>
<param-name>shutdown-on-unload</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>config-file</param-name>
<param-value>quartz.properties</param-value>
</init-param>
<init-param>
<param-name>shutdown-on-unload</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>config-file</param-name>
<param-value>quartz.properties</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
</servlet>
4.在classes的目录下建立quartz.properties
#============================================================================
# Configure Main Scheduler Properties
#============================================================================
org.quartz.scheduler.instanceName = QuartzScheduler
#============================================================================
# Configure ThreadPool
#============================================================================
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 1000
#org.quartz.threadPool.threadPriority = 5
#============================================================================
# Configure Plugins
#============================================================================
org.quartz.plugin.triggHistory.class = org.quartz.plugins.history.LoggingJobHistoryPlugin
org.quartz.plugin.jobInitializer.class = org.quartz.plugins.xml.JobInitializationPlugin
org.quartz.plugin.jobInitializer.fileName = quartz_jobs.xml
#org.quartz.plugin.jobInitializer.overWriteExistingJobs = true
#org.quartz.plugin.jobInitializer.failOnFileNotFound = true
#============================================================================
# Configure Main Scheduler Properties
#============================================================================
org.quartz.scheduler.instanceName = QuartzScheduler
#============================================================================
# Configure ThreadPool
#============================================================================
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 1000
#org.quartz.threadPool.threadPriority = 5
#============================================================================
# Configure Plugins
#============================================================================
org.quartz.plugin.triggHistory.class = org.quartz.plugins.history.LoggingJobHistoryPlugin
org.quartz.plugin.jobInitializer.class = org.quartz.plugins.xml.JobInitializationPlugin
org.quartz.plugin.jobInitializer.fileName = quartz_jobs.xml
#org.quartz.plugin.jobInitializer.overWriteExistingJobs = true
#org.quartz.plugin.jobInitializer.failOnFileNotFound = true
5.在classes的目录下建立quartz_jobs.xml
<?xml version='1.0' encoding='utf-8'?>
<quartz>
<job>
<job-detail>
<name>test</name>
<group>DEFAULT</group>
<description>testJobhere</description>
<job-class>com.allen.MyJob</job-class>
<?xml version='1.0' encoding='utf-8'?>
<quartz>
<job>
<job-detail>
<name>test</name>
<group>DEFAULT</group>
<description>testJobhere</description>
<job-class>com.allen.MyJob</job-class>
</job-detail>
<trigger>
<cron>
<name>testTrigger</name>
<group>DEFAULT</group>
<job-name>test</job-name>
<job-group>DEFALUT</job-group>
<cron-expression>0/5 * * * * ?</cron-expression>
</cron>
</trigger>
</job>
</quartz>
<trigger>
<cron>
<name>testTrigger</name>
<group>DEFAULT</group>
<job-name>test</job-name>
<job-group>DEFALUT</job-group>
<cron-expression>0/5 * * * * ?</cron-expression>
</cron>
</trigger>
</job>
</quartz>
6.用main方法测试:
public class QuartzTest {
public static void main(String[] args) {
// TODO 自动生成方法存根
QuartzTest q=new QuartzTest();
try {
q.startScheduler();
} catch (SchedulerException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
}
protected void startScheduler() throws SchedulerException {
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
JobDetail jobDetail =new JobDetail("testJob", Scheduler.DEFAULT_GROUP, MyJob.class);
//结束时间
long end = System.currentTimeMillis() + 9000L;
//执行10次,每3秒执行一次,到9秒后结束
SimpleTrigger trigger = new SimpleTrigger("test",null,new Date(),new Date(end),10,3000L);
scheduler.scheduleJob(jobDetail, trigger);
scheduler.start();
}
}
// TODO 自动生成方法存根
QuartzTest q=new QuartzTest();
try {
q.startScheduler();
} catch (SchedulerException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
}
protected void startScheduler() throws SchedulerException {
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
JobDetail jobDetail =new JobDetail("testJob", Scheduler.DEFAULT_GROUP, MyJob.class);
//结束时间
long end = System.currentTimeMillis() + 9000L;
//执行10次,每3秒执行一次,到9秒后结束
SimpleTrigger trigger = new SimpleTrigger("test",null,new Date(),new Date(end),10,3000L);
scheduler.scheduleJob(jobDetail, trigger);
scheduler.start();
}
}
7.在应用服务器中发布,就可以在console看到调度
常用示例:
0 0 12 * * ?每天12点触发0 15 10 ? * *每天10点15分触发0 15 10 * * ?每天10点15分触发0 15 10 * * ? *每天10点15分触发0 15 10 * * ? 20052005年每天10点15分触发0 * 14 * * ?每天下午的 2点到2点59分每分触发0 0/5 14 * * ?每天下午的 2点到2点59分(整点开始,每隔5分触发)0 0/5 14,18 * * ?每天下午的 2点到2点59分(整点开始,每隔5分触发)
每天下午的 18点到18点59分(整点开始,每隔5分触发)0 0-5 14 * * ?每天下午的 2点到2点05分每分触发0 10,44 14 ? 3 WED3月分每周三下午的 2点10分和2点44分触发0 15 10 ? * MON-FRI从周一到周五每天上午的10点15分触发0 15 10 15 * ?每月15号上午10点15分触发0 15 10 L * ?每月最后一天的10点15分触发0 15 10 ? * 6L每月最后一周的星期五的10点15分触发0 15 10 ? * 6L 2002-2005从2002年到2005年每月最后一周的星期五的10点15分触发0 15 10 ? * 6#3每月的第三周的星期五开始触发0 0 12 1/5 * ?每月的第一个中午开始每隔5天触发一次0 11 11 11 11 ?每年的11月11号 11点11分触发(光棍节)
0 0 12 * * ?每天12点触发0 15 10 ? * *每天10点15分触发0 15 10 * * ?每天10点15分触发0 15 10 * * ? *每天10点15分触发0 15 10 * * ? 20052005年每天10点15分触发0 * 14 * * ?每天下午的 2点到2点59分每分触发0 0/5 14 * * ?每天下午的 2点到2点59分(整点开始,每隔5分触发)0 0/5 14,18 * * ?每天下午的 2点到2点59分(整点开始,每隔5分触发)
每天下午的 18点到18点59分(整点开始,每隔5分触发)0 0-5 14 * * ?每天下午的 2点到2点05分每分触发0 10,44 14 ? 3 WED3月分每周三下午的 2点10分和2点44分触发0 15 10 ? * MON-FRI从周一到周五每天上午的10点15分触发0 15 10 15 * ?每月15号上午10点15分触发0 15 10 L * ?每月最后一天的10点15分触发0 15 10 ? * 6L每月最后一周的星期五的10点15分触发0 15 10 ? * 6L 2002-2005从2002年到2005年每月最后一周的星期五的10点15分触发0 15 10 ? * 6#3每月的第三周的星期五开始触发0 0 12 1/5 * ?每月的第一个中午开始每隔5天触发一次0 11 11 11 11 ?每年的11月11号 11点11分触发(光棍节)
格式: [秒] [分] [小时] [日] [月] [周] [年]
序号说明是否必填允许填写的值允许的通配符1秒是0-59, - * /2分是0-59, - * /3小时是0-23, - * /4日是1-31, - * ? / L W5月是1-12 or JAN-DEC, - * /6周是1-7 or SUN-SAT, - * ? / L #7年否empty 或 1970-2099, - * /阅读全文
0 0
- 定时任务 Quartz调度(采用配置文件)
- 定时任务 Quartz调度(采用配置文件)
- Quartz 定时任务调度
- quartz定时任务调度
- Quartz定时任务调度
- quartz任务调度配置文件
- quartz定时任务调度学习
- quartz实现定时任务调度
- Spring+Quartz定时任务调度
- quartz的定时调度任务
- spring+quartz定时任务调度
- spring定时任务调度quartz
- Quartz任务调度、手动执行定时任务
- Spring 配置Quartz 定时任务调度服务
- Grails Quartz插件 定时调度任务
- 定时任务调度器Quartz的使用
- Spring配置quartz定时调度任务
- Spring整合Quartz实现定时任务调度
- 高级PHP应用程序漏洞审核技术
- 微信自定义分享页面接口开发
- LeetCode
- maven 上传jar到私服
- Genemotion 模拟器不能拖拽apk安装的问题
- 定时任务 Quartz调度(采用配置文件)
- python画图_matplotlib和pandas
- 从GitHub上拉Yii2项目后的系列问题
- SIFT算法综述
- Empty test suite.(PyCharm程序运行错误)
- Navicat工具介绍
- onResume无限循环
- python3 爬虫技术入门
- webpack学习系列-lazy-loading (https://webpack.js.org/guides/lazy-loading/)