使用quartz定制计划任务的问题
各位兄弟:
看了一些有关quartz的文档,试着写一个例子,用一个TestJob类实现Job
public class TestJob implements Job
{
public TestJob(){
}
public void execute(JobExecutionContext context) throws JobExecutionException
{
JobDetail jobDetail = context.getJobDetail();///通过这个取得调用任务的对象
System.out.println("job executing..."+jobDetail.getName()); }
}
测试类为
public class TestMain {
try {
JobDetail jobDetail =
new JobDetail("testJob", "jGroup1",TestJob.class); ///声明执行哪个操作
//触发器的设置(设置了两个触发器)
CronTrigger cronTrigger1 = new CronTrigger("trigger1_1", "tGroup1");
CronExpression cexp1 = new CronExpression("0 15 10 15 * ?");//每月15日10:15分运行。
cronTrigger1.setCronExpression(cexp1);
CronTrigger cronTrigger2 = new CronTrigger("trigger1_2", "tGroup1");
CronExpression cexp2 = new CronExpression("0 15 18 L * ?");//每月最后一天18:15分运行。
cronTrigger2.setCronExpression(cexp2);
//启动任务
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
//为同一个工作绑定两个触发器
scheduler.scheduleJob(jobDetail, cronTrigger1);
scheduler.scheduleJob(jobDetail, cronTrigger2);
scheduler.start();
} catch (Exception e) {
e.printStackTrace();
}
}
功能是为了在两个不同时间触发同一个操作。可是一运行就出错:
org.quartz.ObjectAlreadyExistsException: Unable to store Job with name: 'testJob' and group: 'jGroup1', because one already exists with this identification.
at org.quartz.simpl.RAMJobStore.storeJob(RAMJobStore.java:222)
at org.quartz.simpl.RAMJobStore.storeJobAndTrigger(RAMJobStore.java:195)
at org.quartz.core.QuartzScheduler.scheduleJob(QuartzScheduler.java:703)
at org.quartz.impl.StdScheduler.scheduleJob(StdScheduler.java:255)
at testqz.TestMain.startSchedule(TestMain.java:131)
我把scheduler.scheduleJob(jobDetail, cronTrigger2);这句屏掉倒是可以运行正常了。不会吧,难道同一动作只能绑定一个触发器?!!quartz不会连这种功能都实现不了吧?!!!
还有就是如果scheduler.start();后,我还想再增加任务,直接scheduler.scheduleJob可以吗?
如果scheduler.start();后我要删除某个Trigger,用什么方法?
如果scheduler.start();后我要删除某个job,但又想保留Trigger,用什么方法?
谢谢赐教。如果有详细解答,分不是问题。