public static synchronized Long nextFireTime(String _name, Integer _id) { String _triggerName = getCronTriggerName(getTimerJobName(_name, _id)); try { return SundialJobScheduler.getScheduler().getTrigger(_triggerName).getNextFireTime().getTime(); } catch (Exception ex) { _logger.error("Error when fetching trigger[{}] next exeuction status", _triggerName, ex); } return null; }
/** * Removes a Job matching the given Job Name * * @param jobName */ public static void removeJob(String jobName) { try { getScheduler().deleteJob(jobName); } catch (SchedulerException e) { logger.error("ERROR REMOVING JOB!!!", e); } }
@Override public void start() { try { XMLSchedulingDataProcessor processor = new XMLSchedulingDataProcessor(scheduler.getCascadingClassLoadHelper()); processor.processFile(XMLSchedulingDataProcessor.QUARTZ_XML_DEFAULT_FILE_NAME, failOnFileNotFound); processor.scheduleJobs(getScheduler()); } catch (Exception e) { logger.error("Error scheduling jobs: " + e.getMessage(), e); } }
/** * Generates a Map of all Job names with corresponding Triggers * * @return */ public static Map<String, List<Trigger>> getAllJobsAndTriggers() { Map<String, List<Trigger>> allJobsMap = new TreeMap<String, List<Trigger>>(); try { Set<String> allJobKeys = getScheduler().getJobKeys(); for (String jobKey : allJobKeys) { List<Trigger> triggers = getScheduler().getTriggersOfJob(jobKey); allJobsMap.put(jobKey, triggers); } } catch (SchedulerException e) { logger.error("COULD NOT GET JOB NAMES!!!", e); } return allJobsMap; }
logger.info("Scheduled job: {} ", jobDetail); sched.addJob(jobDetail); Trigger dupeT = sched.getTrigger(trigger.getName()); if (dupeT != null) { // if trigger with name already exists sched.rescheduleJob(trigger.getName(), trigger); } else { logger.debug("Scheduling job: " + trigger.getJobName() + " with trigger: " + trigger.getName()); sched.scheduleJob(trigger); } catch (ObjectAlreadyExistsException e) { logger.debug("Adding trigger: " + trigger.getName() + " for job: " + trigger.getJobName() + " failed because the trigger already existed.");
Set<Class<? extends Job>> scheduledClasses = scheduler.getCascadingClassLoadHelper().getJobClasses(packageName); try { trigger = buildCronTrigger(cronTrigger, jobClass.getSimpleName()); scheduler.scheduleJob(jobDetail, trigger); logger.info("Scheduled job: {} with trigger: {}", jobDetail, trigger); } catch (Exception e) { try { trigger = buildSimpleTrigger(simpleTrigger, jobClass.getSimpleName()); scheduler.scheduleJob(job, trigger); logger.info("Scheduled job {} with trigger {}", job, trigger); } catch (Exception e) {
/** * Halts the Scheduler's firing of Triggers, and cleans up all resources associated with the Scheduler. */ public static void shutdown() { logger.debug("shutdown() called."); try { getScheduler().shutdown(true); } catch (Exception e) { logger.error("COULD NOT SHUTDOWN SCHEDULER!!!", e); } } }
public static boolean isJobRunning(String jobName) { try { List<JobExecutionContext> currentlyExecutingJobs = getScheduler().getCurrentlyExecutingJobs(); for (JobExecutionContext jobExecutionContext : currentlyExecutingJobs) { String currentlyExecutingJobName = jobExecutionContext.getJobDetail().getName(); if (currentlyExecutingJobName.equals(jobName)) { logger.debug("Matching running Job found!"); return true; } } } catch (SchedulerException e) { logger.error("ERROR CHECKING RUNNING JOB!!!", e); } logger.debug("Matching running NOT Job found!"); return false; }
/** * Adds a Job to the scheduler. Replaces a matching existing Job. * * @param jobName * @param jobClassName * @param params Set this null if there are no params * @param isConcurrencyAllowed */ public static void addJob(String jobName, String jobClassName, Map<String, Object> params, boolean isConcurrencyAllowed) { try { Class<? extends Job> jobClass = getScheduler().getCascadingClassLoadHelper().loadClass(jobClassName); JobDataMap jobDataMap = new JobDataMap(); if (params != null) { for (Entry<String, Object> entry : params.entrySet()) { jobDataMap.put(entry.getKey(), entry.getValue()); } } JobDetail jobDetail = newJobBuilder(jobClass).withIdentity(jobName).usingJobData(jobDataMap).isConcurrencyAllowed(isConcurrencyAllowed).build(); getScheduler().addJob(jobDetail); } catch (SchedulerException e) { logger.error("ERROR ADDING JOB!!!", e); } catch (ClassNotFoundException e) { logger.error("ERROR ADDING JOB!!!", e); } }
/** * @param triggerName * @param jobName * @param cronExpression * @param startTime * @param endTime */ public static void addCronTrigger(String triggerName, String jobName, String cronExpression, Date startTime, Date endTime) { try { CronTriggerBuilder cronTriggerBuilder = cronTriggerBuilder(cronExpression); cronTriggerBuilder.withIdentity(triggerName).forJob(jobName).withPriority(Trigger.DEFAULT_PRIORITY); if(startTime != null){ cronTriggerBuilder.startAt(startTime); } if(endTime != null){ cronTriggerBuilder.endAt(endTime); } OperableTrigger trigger = cronTriggerBuilder.build(); getScheduler().scheduleJob(trigger); } catch (SchedulerException e) { logger.error("ERROR ADDING CRON TRIGGER!!!", e); } catch (ParseException e) { logger.error("ERROR ADDING CRON TRIGGER!!!", e); } }
/** * Generates an alphabetically sorted List of all Job names in the DEFAULT job group * * @return */ public static List<String> getAllJobNames() { List<String> allJobNames = new ArrayList<String>(); try { Set<String> allJobKeys = getScheduler().getJobKeys(); for (String jobKey : allJobKeys) { allJobNames.add(jobKey); } } catch (SchedulerException e) { logger.error("COULD NOT GET JOB NAMES!!!", e); } Collections.sort(allJobNames); return allJobNames; }
/** * Adds a Job to the scheduler. Replaces a matching existing Job. * * @param jobName * @param jobClass * @param params Set this null if there are no params * @param isConcurrencyAllowed */ public static void addJob(String jobName, Class<? extends Job> jobClass, Map<String, Object> params, boolean isConcurrencyAllowed) throws SundialSchedulerException { try { JobDataMap jobDataMap = new JobDataMap(); if (params != null) { for (Entry<String, Object> entry : params.entrySet()) { jobDataMap.put(entry.getKey(), entry.getValue()); } } JobDetail jobDetail = newJobBuilder(jobClass).withIdentity(jobName).usingJobData(jobDataMap).isConcurrencyAllowed(isConcurrencyAllowed).build(); getScheduler().addJob(jobDetail); } catch (SchedulerException e) { logger.error("ERROR ADDING JOB!!!", e); throw new SundialSchedulerException("ERROR ADDING JOB!!!", e); } }
logger.info("Scheduled job: {} ", jobDetail); sched.addJob(jobDetail); Trigger dupeT = sched.getTrigger(trigger.getName()); if (dupeT != null) { // if trigger with name already exists sched.rescheduleJob(trigger.getName(), trigger); } else { logger.debug("Scheduling job: " + trigger.getJobName() + " with trigger: " + trigger.getName()); sched.scheduleJob(trigger); } catch (ObjectAlreadyExistsException e) { logger.debug("Adding trigger: " + trigger.getName() + " for job: " + trigger.getJobName() + " failed because the trigger already existed.");
/** * Generates a Map of all Job names with corresponding Triggers * * @return */ public static Map<String, List<Trigger>> getAllJobsAndTriggers() throws SundialSchedulerException { Map<String, List<Trigger>> allJobsMap = new TreeMap<String, List<Trigger>>(); try { Set<String> allJobKeys = getScheduler().getJobKeys(); for (String jobKey : allJobKeys) { List<Trigger> triggers = getScheduler().getTriggersOfJob(jobKey); allJobsMap.put(jobKey, triggers); } } catch (SchedulerException e) { throw new SundialSchedulerException("COULD NOT GET JOB NAMES!!!", e); } return allJobsMap; }
Set<Class<? extends Job>> scheduledClasses = scheduler.getCascadingClassLoadHelper().getJobClasses(packageName); try { trigger = buildCronTrigger(cronTrigger, jobClass.getSimpleName()); scheduler.scheduleJob(jobDetail, trigger); logger.info("Scheduled job: {} with trigger: {}", jobDetail, trigger); } catch (Exception e) { try { trigger = buildSimpleTrigger(simpleTrigger, jobClass.getSimpleName()); scheduler.scheduleJob(job, trigger); logger.info("Scheduled job {} with trigger {}", job, trigger); } catch (Exception e) {
@Override public void run() { logger.info("Shutting down Quartz..."); try { scheduler.shutdown(isCleanShutdown()); } catch (SchedulerException e) { logger.info("Error shutting down Quartz: " + e.getMessage(), e); } } };
public static boolean isJobRunning(String jobName) throws SundialSchedulerException { try { List<JobExecutionContext> currentlyExecutingJobs = getScheduler().getCurrentlyExecutingJobs(); for (JobExecutionContext jobExecutionContext : currentlyExecutingJobs) { String currentlyExecutingJobName = jobExecutionContext.getJobDetail().getName(); if (currentlyExecutingJobName.equals(jobName)) { logger.debug("Matching running Job found!"); return true; } } } catch (SchedulerException e) { throw new SundialSchedulerException("ERROR CHECKING RUNNING JOB!!!", e); } logger.debug("Matching running NOT Job found!"); return false; }
/** * @param triggerName * @param jobName * @param repeatCount * @param repeatInterval * @param startTime * @param endTime */ public static void addSimpleTrigger(String triggerName, String jobName, int repeatCount, long repeatInterval, Date startTime, Date endTime) { try { SimpleTriggerBuilder simpleTriggerBuilder = simpleTriggerBuilder(); simpleTriggerBuilder.withRepeatCount(repeatCount).withIntervalInMilliseconds(repeatInterval).withIdentity(triggerName).forJob(jobName); if(startTime != null){ simpleTriggerBuilder.startAt(startTime); } if(endTime != null){ simpleTriggerBuilder.endAt(endTime); } OperableTrigger trigger = simpleTriggerBuilder.build(); getScheduler().scheduleJob(trigger); } catch (SchedulerException e) { logger.error("ERROR ADDING CRON TRIGGER!!!", e); } }
/** * Generates an alphabetically sorted List of all Job names in the DEFAULT job group * * @return */ public static List<String> getAllJobNames() throws SundialSchedulerException { List<String> allJobNames = new ArrayList<String>(); try { Set<String> allJobKeys = getScheduler().getJobKeys(); for (String jobKey : allJobKeys) { allJobNames.add(jobKey); } } catch (SchedulerException e) { throw new SundialSchedulerException("COULD NOT GET JOB NAMES!!!", e); } Collections.sort(allJobNames); return allJobNames; }
.build(); getScheduler().addJob(jobDetail);