【发布时间】:2015-05-09 18:57:41
【问题描述】:
我正在尝试在每天上午 8 点和下午 12 点在我的 Servlet/JSP 应用程序中执行特定的工作。 Quartz 库似乎很适合这个,所以我尝试使用它。
我使用了以下链接中的教程和示例。
http://www.mkyong.com/java/quartz-2-scheduler-tutorial/
http://www.javacodegeeks.com/2012/07/quartz-2-scheduler-example.html
下面是一个尝试
职位类别
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
public class HelloJob implements Job
{
public void execute(JobExecutionContext context)
throws JobExecutionException {
System.out.println("Hello Quartz!");
}
}
触发器类
import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SimpleScheduleBuilder;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory;
public class SimpleTriggerExample {
public static void main(String[] args) throws Exception {
JobDetail job = JobBuilder.newJob(HelloJob.class)
.withIdentity("dummyJobName", "group1").build();
// Trigger the job to run on the next round minute
Trigger trigger = TriggerBuilder
.newTrigger()
.withIdentity("dummyTriggerName", "group1")
.withSchedule(
SimpleScheduleBuilder.simpleSchedule()
.withIntervalInSeconds(5).repeatForever())
.build();
// schedule it
Scheduler scheduler = new StdSchedulerFactory().getScheduler();
scheduler.start();
scheduler.scheduleJob(job, trigger);
}
}
但是,两者都不能满足我的需要。它们不会在特定时间运行。我如何使用 Quarts 在每天上午 8 点和下午 12 点执行工作?
【问题讨论】:
-
来自quartz-scheduler.org/generated/2.2.1/html/qs-all/#page/…: SimpleTrigger 如果您需要“一次性”执行(在给定的时间只执行一次作业),或者如果您需要触发在给定时间作业,并让它重复 N 次,执行之间有 T 的延迟。 *如果您希望根据类似日历的时间表(例如“每周五中午”或“每月第 10 天 10:15”)触发,CronTrigger 非常有用。
-
@JBNizet: OKKK...有什么例子吗?
-
quartz-scheduler.org/api/2.2.0/org/quartz/… Google 是您的朋友。文档也是如此。我以前从未使用过石英,我花了 3 分钟才找到它。
-
@JBNizet:问题不在于调度程序。应该安排的方式。在 MKYONG 教程中,他给出了一个例子,但似乎是我不熟悉的一种表达方式。
-
您阅读过我链接到的文档吗?它包含一个使用
.withSchedule(dailyAtHourAndMinute(10, 0))的示例。你甚至不需要阅读 javadoc 来猜测它的作用。
标签: java servlets scheduled-tasks quartz-scheduler