首先添加所需要的类包:quartz-1.5.2.jar,quartz-all-1.5.2.jar,quartz-jboss-1.5.2.jar
//设置定时作业
public void startScheduler(HttpServletRequest requests)throws SchedulerException{
try{
//建立作业调度器
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
//判断作业调度内是否有作业,如果有将其删除
if (!scheduler.isShutdown()) {
scheduler.deleteJob("ReceiveOnTimed", Scheduler.DEFAULT_GROUP);
}
//删除调度器的作业后,新建一个我们现在要完成的作业,该作业所需要的类是ReceiveJobd.class,作业名字是 ReceiveOnTimes,所属分组是Scheduler.DEFAULT_GROUP
JobDetail jobDetail = new JobDetail("ReceiveOnTimed",
Scheduler.DEFAULT_GROUP,
ReceiveJobd.class);
int m = ips.length;
int n = tablenames.length;
//向作业内设置要传入的参数
jobDetail.getJobDataMap().put("scheduler", scheduler);
jobDetail.getJobDataMap().put("ipLength", m);
jobDetail.getJobDataMap().put("tablenameLength", n);
jobDetail.getJobDataMap().put("wcx",wc);
for (int i = 0; i < m; i++) {
jobDetail.getJobDataMap().put("ip" + i, ips[i]);
for (int j = 0; j < n; j++) {
jobDetail.getJobDataMap().put("tablename" + j, tablenames[j]);
}
}
//建立触发器,判断何时触发该作业,参数为触发器的名称,触发器分组,作业名称,作业分组,时间设定
Trigger trigger = new CronTrigger("ReceiverOnTimeTriggerd",
scheduler.DEFAULT_GROUP,
"ReceiveOnTimed",
scheduler.DEFAULT_GROUP, time);
//将作业和触发器添加到调度器
scheduler.scheduleJob(jobDetail, trigger);
//按照设置开始调度
scheduler.start();
}catch(Exception e){
e.printStackTrace();
}
}
具体作业类的处理:
package com.bodhiya.schsystem.business;
import org.quartz.Job;
import org.quartz.JobDataMap;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.Scheduler;
import org.springframework.web.context.WebApplicationContext;
public class ReceiveJobd implements Job{
public void ReceiveJobd(){
}
//作业具体实现的功能
public void execute(JobExecutionContext context) throws
JobExecutionException {
try {
//建立JobDataMap对象,用来接收传递的参数
JobDataMap dataMap = context.getMergedJobDataMap();
int ipLength = dataMap.getInt("ipLength");
int tablenameLength = dataMap.getInt("tablenameLength");
WebApplicationContext wc=(WebApplicationContext)dataMap.get("wcx");
String ip = "";
String tablename = "";
for (int i = 0; i < ipLength; i++) {
ip = dataMap.getString("ip" + i);
for (int j = 0; j < tablenameLength; j++) {
tablename = dataMap.getString("tablename" + j);
ExchangeAccess ea=new ExchangeAccess(ip,tablename,wc);
//启动线程
ea.start();
}
}
Scheduler scheduler = (Scheduler) dataMap.get("scheduler");
scheduler.deleteJob("ReceiveOnTimed", Scheduler.DEFAULT_GROUP);
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
分享到:
相关推荐
超级简单易用的java定时器,1个源程序,一个配置文件,再加一个配置项,完美搞定
Time定时器、Scheduler定时器:依赖的类包:quartz-1.5.2.jar,quartz-all-1.5.2.jar,quartz-jboss-1.5.2.jar
这些demo案例是笔者,之前在开发过程中用到的一些测试案例,很实用,几乎和时间相关的都有了。
本资源是一个最新 Spring 4.2.2 集成 Quartz Scheduler 2.2.2 的一个简单的 demo,也是博客《最新 Spring 4.2.2 集成 Quartz Scheduler 2.2.2 任务调度示例》的配套示例项目,该博客地址是:...
Quartz 是一个开源的作业调度框架,它完全由 Java 写成,并设计用于 J2SE 和 J2EE 应用中。它提供了巨大的灵活性而不牺牲简单性。你能够用它来为执行一个作业而创建简单的或复杂的调度。本系统结合通过 Spring 来...
支持solr6.1-solr-dataimport-scheduler-1.2.jar 兼容最新的solr6.1
可以通过少量修改直接融入到已有的java项目,有维护定时器的界面,包括新增修改删除,立即执行,暂停,恢复等功能,省去了项目中大量配置定时器的繁琐,而且便于维护
在工作中有用到spring task作为定时任务的处理,spring通过接口TaskExecutor和TaskScheduler这两个接口的方式为异步定时任务提供了一种抽象。这就意味着spring容许你使用其他的定时任务框架,当然spring自身也提供了...
Solr官方提供了很强大的Data Import Request Handler,同时提供了一个简单的 Scheduler,Url:示例中的 Scheduler 只支持增量更新,不支持定期重做索引,因此我做了一个简单的封装,增加了重做索引的定时器.(原...
cron表达式是一个好东西,这个东西不仅Java的quartZ能用到,Go语言中也可以用到。我没有用过Linux的cron,但网上说Linux也是可以用crontab -e 命令来配置定时任务。Go语言和Java中都是可以精确到秒的,但是Linux中...
com.javapatterns.chainofresp.scheduler 专题:定时器与击鼓传花 com.javapatterns.command 命令模式 com.javapatterns.command.swingundo 专题:Swing库中的命令撤销和恢复 com.javapatterns.composite 合成...
四、流程中任务的分配 37 4.1 assignment-handler方式的任务分配 38 4.2 swimlane方式的任务分配 39 五、JBPM持久化 42 5.1 特殊数据库支持 42 5.2 JBPM数据库的安装 42 5.2 JBPM流程发布 45 5.2.1 搭建JBPM的WEB...
Quartz is a richly featured, open source job scheduling library that can be ... The Quartz Scheduler includes many enterprise-class features, such as support for JTA transactions and clustering.
NULL 博文链接:https://medbricom.iteye.com/blog/1782765