public Class<?> getJobStoreClass() { return resources.getJobStore().getClass(); }
/** * <p> * Construct a new <code>QuartzSchedulerThread</code> for the given * <code>QuartzScheduler</code> as a non-daemon <code>Thread</code> * with normal priority. * </p> */ QuartzSchedulerThread(QuartzScheduler qs, QuartzSchedulerResources qsRsrcs) { this(qs, qsRsrcs, qsRsrcs.getMakeSchedulerThreadDaemon(), Thread.NORM_PRIORITY); }
private void startPlugins() { java.util.Iterator<SchedulerPlugin> itr = resources.getSchedulerPlugins().iterator(); while (itr.hasNext()) { SchedulerPlugin plugin = itr.next(); plugin.start(); } }
/** * <p> * Construct a new <code>QuartzSchedulerThread</code> for the given * <code>QuartzScheduler</code> as a <code>Thread</code> with the given * attributes. * </p> */ QuartzSchedulerThread(QuartzScheduler qs, QuartzSchedulerResources qsRsrcs, boolean setDaemon, int threadPrio) { super(qs.getSchedulerThreadGroup(), qsRsrcs.getThreadName()); this.qs = qs; this.qsRsrcs = qsRsrcs; this.setDaemon(setDaemon); if(qsRsrcs.isThreadsInheritInitializersClassLoadContext()) { log.info("QuartzSchedulerThread Inheriting ContextClassLoader of thread: " + Thread.currentThread().getName()); this.setContextClassLoader(Thread.currentThread().getContextClassLoader()); } this.setPriority(threadPrio); // start the underlying thread, but put this object into the 'paused' // state // so processing doesn't start yet... paused = true; halted = new AtomicBoolean(false); }
String uid = (rmiBindName == null) ? QuartzSchedulerResources.getUniqueIdentifier( schedName, schedInstId) : rmiBindName; jmxObjectName = QuartzSchedulerResources.generateJMXObjectName(schedName, schedInstId); schedInstId = "TERRACOTTA_CLUSTERED,node=" + uuid; if (jmxObjectName == null) { jmxObjectName = QuartzSchedulerResources.generateJMXObjectName(schedName, schedInstId); jmxObjectName = QuartzSchedulerResources.generateJMXObjectName(schedName, schedInstId + ",node=" + uuid); QuartzSchedulerResources rsrcs = new QuartzSchedulerResources(); rsrcs.setName(schedName); rsrcs.setThreadName(threadName); rsrcs.setInstanceId(schedInstId); rsrcs.setJobRunShellFactory(jrsf); rsrcs.setMakeSchedulerThreadDaemon(makeSchedulerThreadDaemon); rsrcs.setThreadsInheritInitializersClassLoadContext(threadsInheritInitalizersClassLoader); rsrcs.setBatchTimeWindow(batchTimeWindow); rsrcs.setMaxBatchSize(maxBatchSize); rsrcs.setInterruptJobsOnShutdown(interruptJobsOnShutdown); rsrcs.setInterruptJobsOnShutdownWithWait(interruptJobsOnShutdownWithWait); rsrcs.setJMXExport(jmxExport); rsrcs.setJMXObjectName(jmxObjectName); managementRESTServiceConfiguration.setBind(managementRESTServiceHostAndPort); managementRESTServiceConfiguration.setEnabled(managementRESTServiceEnabled); rsrcs.setManagementRESTServiceConfiguration(managementRESTServiceConfiguration);
String uid = (rmiBindName == null) ? QuartzSchedulerResources.getUniqueIdentifier( schedName, schedInstId) : rmiBindName; jmxObjectName = QuartzSchedulerResources.generateJMXObjectName(schedName, schedInstId); QuartzSchedulerResources rsrcs = new QuartzSchedulerResources(); rsrcs.setName(schedName); rsrcs.setThreadName(threadName); rsrcs.setInstanceId(schedInstId); rsrcs.setJobRunShellFactory(jrsf); rsrcs.setMakeSchedulerThreadDaemon(makeSchedulerThreadDaemon); rsrcs.setThreadsInheritInitializersClassLoadContext(threadsInheritInitalizersClassLoader); rsrcs.setJMXExport(jmxExport); rsrcs.setJMXObjectName(jmxObjectName); rsrcs.setRMIRegistryHost(rmiHost); rsrcs.setRMIRegistryPort(rmiPort); rsrcs.setRMIServerPort(rmiServerPort); rsrcs.setRMICreateRegistryStrategy(rmiCreateRegistry); rsrcs.setRMIBindName(rmiBindName); rsrcs.setThreadPool(tp); if(tp instanceof SimpleThreadPool) { ((SimpleThreadPool)tp).setThreadNamePrefix(schedName + "_Worker"); rsrcs.setJobStore(js); rsrcs.addSchedulerPlugin(plugins[i]);
QuartzSchedulerResources quartzSchedulerResources = new QuartzSchedulerResources(); quartzSchedulerResources.setThreadName("Quartz Scheduler Thread"); quartzSchedulerResources.setJobRunShellFactory(jrsf); quartzSchedulerResources.setMakeSchedulerThreadDaemon(false); quartzSchedulerResources.setThreadsInheritInitializersClassLoadContext(false); quartzSchedulerResources.setBatchTimeWindow(0L); quartzSchedulerResources.setMaxBatchSize(1); quartzSchedulerResources.setInterruptJobsOnShutdown(true); quartzSchedulerResources.setInterruptJobsOnShutdownWithWait(true); quartzSchedulerResources.setThreadPool(threadPool); threadPool.setThreadNamePrefix("Quartz_Scheduler_Worker"); threadPool.initialize(); tpInited = true; quartzSchedulerResources.setJobStore(jobstore); xmlSchedulingDataProcessorPlugin.setFailOnFileNotFound(false); xmlSchedulingDataProcessorPlugin.setScanInterval(0); quartzSchedulerResources.addSchedulerPlugin(xmlSchedulingDataProcessorPlugin); quartzSchedulerResources.addSchedulerPlugin(shutdownHookPlugin); quartzSchedulerResources.addSchedulerPlugin(annotationJobTriggerPlugin);
threadPool.initialize(); QuartzSchedulerResources qrs = new QuartzSchedulerResources(); qrs.setName(schedulerName); qrs.setInstanceId(schedulerInstanceId); SchedulerDetailsSetter.setDetails(threadPool, schedulerName, schedulerInstanceId); qrs.setJobRunShellFactory(jrsf); qrs.setThreadPool(threadPool); qrs.setThreadExecutor(threadExecutor); qrs.setJobStore(jobStore); qrs.setMaxBatchSize(maxBatchSize); qrs.setBatchTimeWindow(batchTimeWindow); qrs.setRMIRegistryHost(rmiRegistryHost); qrs.setRMIRegistryPort(rmiRegistryPort); qrs.setJMXExport(jmxExport); if (jmxObjectName != null) { qrs.setJMXObjectName(jmxObjectName); qrs.addSchedulerPlugin(pluginIter.next());
schedCtxt.setInstanceId(schedulerInstanceId); QuartzSchedulerResources qrs = new QuartzSchedulerResources(); qrs.setName(schedulerName); qrs.setInstanceId(schedulerInstanceId); qrs.setJobRunShellFactory(jrsf); qrs.setThreadPool(threadPool); qrs.setJobStore(jobStore); qrs.setRMIRegistryHost(rmiRegistryHost); qrs.setRMIRegistryPort(rmiRegistryPort); qrs.addSchedulerPlugin((SchedulerPlugin)pluginIter.next());
long delay = computeDelayForRepeatedErrors(qsRsrcs.getJobStore(), acquiresFailed); Thread.sleep(delay); } catch (Exception ignore) { int availThreadCount = qsRsrcs.getThreadPool().blockForAvailableThreads(); if(availThreadCount > 0) { // will always be true, due to semantics of blockForAvailableThreads... triggers = qsRsrcs.getJobStore().acquireNextTriggers( now + idleWaitTime, Math.min(availThreadCount, qsRsrcs.getMaxBatchSize()), qsRsrcs.getBatchTimeWindow()); acquiresFailed = 0; if (log.isDebugEnabled()) List<TriggerFiredResult> res = qsRsrcs.getJobStore().triggersFired(triggers); if(res != null) bndles = res; qsRsrcs.getJobStore().releaseAcquiredTrigger(triggers.get(i)); qsRsrcs.getJobStore().releaseAcquiredTrigger(triggers.get(i)); continue; qsRsrcs.getJobStore().releaseAcquiredTrigger(triggers.get(i)); continue; shell = qsRsrcs.getJobRunShellFactory().createJobRunShell(bndle); shell.initialize(qs); } catch (SchedulerException se) { qsRsrcs.getJobStore().triggeredJobComplete(triggers.get(i), bndle.getJobDetail(), CompletedExecutionInstruction.SET_ALL_JOB_TRIGGERS_ERROR); continue;
String schedulerInstanceId = DirectSchedulerFactory.DEFAULT_INSTANCE_ID; QuartzSchedulerResources qrs = new QuartzSchedulerResources(); JobRunShellFactory jrsf = new StdJobRunShellFactory(); qrs.setName(schedulerName); qrs.setInstanceId(schedulerInstanceId); qrs.setJobRunShellFactory(jrsf); qrs.setThreadPool(threadPool); qrs.setThreadExecutor(new DefaultThreadExecutor()); qrs.setJobStore(store); qrs.setRunUpdateCheck(false); QuartzScheduler qs = new QuartzScheduler(qrs, -1, -1);
int availTreadCount = qsRsrcs.getThreadPool().blockForAvailableThreads(); if(availTreadCount > 0) { // will always be true, due to semantics of blockForAvailableThreads... trigger = qsRsrcs.getJobStore().acquireNextTrigger( ctxt, now + idleWaitTime); lastAcquireFailed = false; qsRsrcs.getJobStore().releaseAcquiredTrigger( ctxt, trigger); } catch (JobPersistenceException jpe) { bndle = qsRsrcs.getJobStore().triggerFired(ctxt, trigger); } catch (SchedulerException se) { qsRsrcs.getJobStore().releaseAcquiredTrigger(ctxt, trigger); } catch (SchedulerException se) { shell = qsRsrcs.getJobRunShellFactory().borrowJobRunShell(); shell.initialize(qs, bndle); } catch (SchedulerException se) { try { qsRsrcs.getJobStore().triggeredJobComplete(ctxt, trigger, bndle.getJobDetail(), Trigger.INSTRUCTION_SET_ALL_JOB_TRIGGERS_ERROR); } catch (SchedulerException se2) { if (qsRsrcs.getThreadPool().runInThread(shell) == false) { try {
String uid = (rmiBindName == null) ? QuartzSchedulerResources.getUniqueIdentifier( schedName, schedInstId) : rmiBindName; jmxObjectName = QuartzSchedulerResources.generateJMXObjectName(schedName, schedInstId); schedInstId = "TERRACOTTA_CLUSTERED,node=" + uuid; if (jmxObjectName == null) { jmxObjectName = QuartzSchedulerResources.generateJMXObjectName(schedName, schedInstId); jmxObjectName = QuartzSchedulerResources.generateJMXObjectName(schedName, schedInstId + ",node=" + uuid); QuartzSchedulerResources rsrcs = new QuartzSchedulerResources(); rsrcs.setName(schedName); rsrcs.setThreadName(threadName); rsrcs.setInstanceId(schedInstId); rsrcs.setJobRunShellFactory(jrsf); rsrcs.setMakeSchedulerThreadDaemon(makeSchedulerThreadDaemon); rsrcs.setThreadsInheritInitializersClassLoadContext(threadsInheritInitalizersClassLoader); rsrcs.setBatchTimeWindow(batchTimeWindow); rsrcs.setMaxBatchSize(maxBatchSize); rsrcs.setInterruptJobsOnShutdown(interruptJobsOnShutdown); rsrcs.setInterruptJobsOnShutdownWithWait(interruptJobsOnShutdownWithWait); rsrcs.setJMXExport(jmxExport); rsrcs.setJMXObjectName(jmxObjectName); managementRESTServiceConfiguration.setBind(managementRESTServiceHostAndPort); managementRESTServiceConfiguration.setEnabled(managementRESTServiceEnabled); rsrcs.setManagementRESTServiceConfiguration(managementRESTServiceConfiguration);
String uid = (rmiBindName == null) ? QuartzSchedulerResources.getUniqueIdentifier( schedName, schedInstId) : rmiBindName; jmxObjectName = QuartzSchedulerResources.generateJMXObjectName(schedName, schedInstId); QuartzSchedulerResources rsrcs = new QuartzSchedulerResources(); rsrcs.setName(schedName); rsrcs.setThreadName(threadName); rsrcs.setInstanceId(schedInstId); rsrcs.setJobRunShellFactory(jrsf); rsrcs.setMakeSchedulerThreadDaemon(makeSchedulerThreadDaemon); rsrcs.setThreadsInheritInitializersClassLoadContext(threadsInheritInitalizersClassLoader); rsrcs.setJMXExport(jmxExport); rsrcs.setJMXObjectName(jmxObjectName); rsrcs.setRMIRegistryHost(rmiHost); rsrcs.setRMIRegistryPort(rmiPort); rsrcs.setRMIServerPort(rmiServerPort); rsrcs.setRMICreateRegistryStrategy(rmiCreateRegistry); rsrcs.setRMIBindName(rmiBindName); rsrcs.setThreadPool(tp); if(tp instanceof SimpleThreadPool) { ((SimpleThreadPool)tp).setThreadNamePrefix(schedName + "_Worker"); rsrcs.setJobStore(js); rsrcs.addSchedulerPlugin(plugins[i]);
QuartzSchedulerResources quartzSchedulerResources = new QuartzSchedulerResources(); quartzSchedulerResources.setThreadName("Quartz Scheduler Thread"); quartzSchedulerResources.setJobRunShellFactory(jrsf); quartzSchedulerResources.setMakeSchedulerThreadDaemon(false); quartzSchedulerResources.setThreadsInheritInitializersClassLoadContext(false); quartzSchedulerResources.setBatchTimeWindow(0L); quartzSchedulerResources.setMaxBatchSize(1); quartzSchedulerResources.setInterruptJobsOnShutdown(true); quartzSchedulerResources.setInterruptJobsOnShutdownWithWait(true); quartzSchedulerResources.setThreadPool(threadPool); threadPool.setThreadNamePrefix("Quartz_Scheduler_Worker"); threadPool.initialize(); tpInited = true; quartzSchedulerResources.setJobStore(jobstore); xmlSchedulingDataProcessorPlugin.setFailOnFileNotFound(false); xmlSchedulingDataProcessorPlugin.setScanInterval(0); quartzSchedulerResources.addSchedulerPlugin(xmlSchedulingDataProcessorPlugin); quartzSchedulerResources.addSchedulerPlugin(shutdownHookPlugin); quartzSchedulerResources.addSchedulerPlugin(annotationJobTriggerPlugin);
threadPool.initialize(); QuartzSchedulerResources qrs = new QuartzSchedulerResources(); qrs.setName(schedulerName); qrs.setInstanceId(schedulerInstanceId); SchedulerDetailsSetter.setDetails(threadPool, schedulerName, schedulerInstanceId); qrs.setJobRunShellFactory(jrsf); qrs.setThreadPool(threadPool); qrs.setThreadExecutor(threadExecutor); qrs.setJobStore(jobStore); qrs.setMaxBatchSize(maxBatchSize); qrs.setBatchTimeWindow(batchTimeWindow); qrs.setRMIRegistryHost(rmiRegistryHost); qrs.setRMIRegistryPort(rmiRegistryPort); qrs.setJMXExport(jmxExport); if (jmxObjectName != null) { qrs.setJMXObjectName(jmxObjectName); qrs.addSchedulerPlugin(pluginIter.next());
schedCtxt.setInstanceId(schedulerInstanceId); QuartzSchedulerResources qrs = new QuartzSchedulerResources(); qrs.setName(schedulerName); qrs.setInstanceId(schedulerInstanceId); qrs.setJobRunShellFactory(jrsf); qrs.setThreadPool(threadPool); qrs.setJobStore(jobStore); qrs.setRMIRegistryHost(rmiRegistryHost); qrs.setRMIRegistryPort(rmiRegistryPort); qrs.addSchedulerPlugin((SchedulerPlugin)pluginIter.next());
long delay = computeDelayForRepeatedErrors(qsRsrcs.getJobStore(), acquiresFailed); Thread.sleep(delay); } catch (Exception ignore) { int availThreadCount = qsRsrcs.getThreadPool().blockForAvailableThreads(); if(availThreadCount > 0) { // will always be true, due to semantics of blockForAvailableThreads... triggers = qsRsrcs.getJobStore().acquireNextTriggers( now + idleWaitTime, Math.min(availThreadCount, qsRsrcs.getMaxBatchSize()), qsRsrcs.getBatchTimeWindow()); acquiresFailed = 0; if (log.isDebugEnabled()) List<TriggerFiredResult> res = qsRsrcs.getJobStore().triggersFired(triggers); if(res != null) bndles = res; qsRsrcs.getJobStore().releaseAcquiredTrigger(triggers.get(i)); qsRsrcs.getJobStore().releaseAcquiredTrigger(triggers.get(i)); continue; qsRsrcs.getJobStore().releaseAcquiredTrigger(triggers.get(i)); continue; shell = qsRsrcs.getJobRunShellFactory().createJobRunShell(bndle); shell.initialize(qs); } catch (SchedulerException se) { qsRsrcs.getJobStore().triggeredJobComplete(triggers.get(i), bndle.getJobDetail(), CompletedExecutionInstruction.SET_ALL_JOB_TRIGGERS_ERROR); continue;
String schedulerInstanceId = DirectSchedulerFactory.DEFAULT_INSTANCE_ID; QuartzSchedulerResources qrs = new QuartzSchedulerResources(); JobRunShellFactory jrsf = new StdJobRunShellFactory(); qrs.setName(schedulerName); qrs.setInstanceId(schedulerInstanceId); qrs.setJobRunShellFactory(jrsf); qrs.setThreadPool(threadPool); qrs.setThreadExecutor(new DefaultThreadExecutor()); qrs.setJobStore(store); qrs.setRunUpdateCheck(false); QuartzScheduler qs = new QuartzScheduler(qrs, -1, -1);
/** * <p> * Construct a new <code>QuartzSchedulerThread</code> for the given * <code>QuartzScheduler</code> as a <code>Thread</code> with the given * attributes. * </p> */ QuartzSchedulerThread(QuartzScheduler qs, QuartzSchedulerResources qsRsrcs, boolean setDaemon, int threadPrio) { super(qs.getSchedulerThreadGroup(), qsRsrcs.getThreadName()); this.qs = qs; this.qsRsrcs = qsRsrcs; this.setDaemon(setDaemon); if(qsRsrcs.isThreadsInheritInitializersClassLoadContext()) { log.info("QuartzSchedulerThread Inheriting ContextClassLoader of thread: " + Thread.currentThread().getName()); this.setContextClassLoader(Thread.currentThread().getContextClassLoader()); } this.setPriority(threadPrio); // start the underlying thread, but put this object into the 'paused' // state // so processing doesn't start yet... paused = true; halted = new AtomicBoolean(false); }