0
votes

I am using Quartz Scheduler 2.2.0 in my Java SSE (Java Flex) Application. I have set a schedule that run every day at 10:00am and perform some job. I didn't shutdown Quartz Scheduler because I want it to run everyday.

But Is there anyway I know that Quartz Scheduler is already running because if I start it when user open my Java Flex Application so multiple instances exists.

Is there any way I can get JVM process running on computer and I can see that Quartz Scheduler process is already up so I don't need to run it again or If I run it again it should automatically check if one instance exists so it should throw an exception.

I am giving my Configuration XML file below, hope this helps...

quartz.properties

#============================================================================
# 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}

and this is how I schedule my jobs

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();
        }
1

1 Answers

1
votes

U can do by this scheduler.getCurrentlyExecutingJobs() to get a list of jobs which are currently running.If u found any single Job or Scheduler is Runnable then u can stop.