我在我的 Java SSE (Java Flex) 应用程序中使用 Quartz Scheduler 2.2.0。我设定了每天上午 10:00 运行的时间表并执行一些工作。我没有关闭 Quartz Scheduler,因为我希望它每天都运行。
但是无论如何我知道 Quartz Scheduler 已经在运行,因为如果我在用户打开我的 Java Flex 应用程序时启动它,那么就会存在多个实例。
有什么方法可以让 JVM 进程在计算机上运行,我可以看到 Quartz Scheduler 进程已经启动,所以我不需要再次运行它,或者如果我再次运行它,它应该自动检查一个实例是否存在所以它应该抛出异常。
我在下面给出了我的配置 XML 文件,希望这会有所帮助......
石英属性
#============================================================================
# Configure Main Scheduler Properties
#============================================================================
org.quartz.scheduler.instanceName: SF-Tasks-Scheduler
org.quartz.scheduler.instanceId: Quartz_Instance_1
org.quartz.scheduler.instanceIdGenerator.class: org.quartz.simpl.HostnameInstanceIdGenerator
org.quartz.scheduler.skipUpdateCheck: true
org.quartz.scheduler.makeSchedulerThreadDaemon: true
#============================================================================
# Configure ThreadPool
#============================================================================
org.quartz.threadPool.class: org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount: 1
org.quartz.threadPool.threadPriority: 5
#============================================================================
# Configure JobStore
#============================================================================
org.quartz.jobStore.misfireThreshold: 60000
org.quartz.jobStore.class: org.quartz.simpl.RAMJobStore
#============================================================================
# Configure Plugins
#============================================================================
org.quartz.plugin.triggHistory.class = \org.quartz.plugins.history.LoggingTriggerHistoryPlugin
org.quartz.plugin.triggHistory.triggerFiredMessage = Trigger {1}.{0} fired job {6}.{5} at\: {4, date, HH\:mm\:ss MM/dd/yyyy}
org.quartz.plugin.triggHistory.triggerCompleteMessage = Trigger {1}.{0} completed firing job {6}.{5} at {4, date, HH\:mm\:ss MM/dd/yyyy}
这就是我安排工作的方式
try {
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
JobDetail jobTaskUpdater = JobBuilder.newJob(JobTaskUpdater.class).withIdentity(JobTaskUpdater.class.getName(), GROUP_TASK_JOB_DETAIL).build();
Trigger trigger = TriggerBuilder.newTrigger().withIdentity(NAME_TRIGGER_TASK_UPDATER, GROUP_TASK_TRIGGER).withSchedule(SimpleScheduleBuilder.repeatMinutelyForever()).build();
JobTaskUpdaterStatusListener listener = new JobTaskUpdaterStatusListener();
KeyMatcher<JobKey> matcherTaskUpdater = KeyMatcher.keyEquals(jobTaskUpdater.getKey());
scheduler.getListenerManager().addJobListener(listener, matcherTaskUpdater);
scheduler.scheduleJob(jobTaskUpdater, trigger);
scheduler.start();
} catch (SchedulerException e) {
e.printStackTrace();
}