private void synchronizeJob(JobDefinition jobDefinition) throws SynchronizationException { try { if (!schedulerCoreService.existsJob(jobDefinition.getName())) { schedulerCoreService.createJob(jobDefinition.getName(), jobDefinition.getGroup(), jobDefinition.getClazz(), jobDefinition.getHandler(), jobDefinition.getEngine(), jobDefinition.getDescription(), jobDefinition.getExpression(), jobDefinition.isSingleton()); logger.info("Synchronized a new Job [{}] from group: {}", jobDefinition.getName(), jobDefinition.getGroup()); } else { JobDefinition existing = schedulerCoreService.getJob(jobDefinition.getName()); if (!jobDefinition.equals(existing)) { schedulerCoreService.updateJob(jobDefinition.getName(), jobDefinition.getGroup(), jobDefinition.getClazz(), jobDefinition.getHandler(), jobDefinition.getEngine(), jobDefinition.getDescription(), jobDefinition.getExpression(), jobDefinition.isSingleton()); logger.info("Synchronized a modified Job [{}] from group: {}", jobDefinition.getName(), jobDefinition.getGroup()); } } JOBS_SYNCHRONIZED.add(jobDefinition.getName()); } catch (SchedulerException e) { throw new SynchronizationException(e); } }