/* * RHQ Management Platform * Copyright (C) 2005-2008 Red Hat, Inc. * All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation version 2 of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ package org.rhq.enterprise.server.scheduler; import java.util.Date; import java.util.List; import java.util.Properties; import java.util.Set; import javax.management.ObjectName; import org.quartz.Calendar; import org.quartz.JobDataMap; import org.quartz.JobDetail; import org.quartz.JobListener; import org.quartz.Scheduler; import org.quartz.SchedulerContext; import org.quartz.SchedulerException; import org.quartz.SchedulerListener; import org.quartz.SchedulerMetaData; import org.quartz.Trigger; import org.quartz.TriggerListener; import org.quartz.spi.JobFactory; import org.rhq.core.util.ObjectNameFactory; import org.rhq.enterprise.server.operation.OperationManagerLocal; /** * MBean interface which is also the local interface to the scheduler SLSB. This is essentially the same interface as * the Quartz scheduler. We have both an MBean and SLSB facade to Quartz - see {@link SchedulerLocal}. */ public interface SchedulerServiceMBean extends Scheduler { /** * The Scheduler MBean Server name. */ ObjectName SCHEDULER_MBEAN_NAME = ObjectNameFactory.create("rhq:service=scheduler"); /** * Get the properties for Quartz. * * @return Quartz configuration properties */ Properties getQuartzProperties(); /** * Set the properties for Quartz and reinitialize the Quartz scheduler factory. * * @param quartzProps the new properties * * @throws SchedulerException if failed to initialize Quartz */ void setQuartzProperties(Properties quartzProps) throws SchedulerException; /** * Returns the configured operation timeout. The scheduler can have defined in its * {@link #getQuartzProperties() configuration} a custom property that indicates how long an operation is allowed to * run before it is considered to have timed out. This is used to clean out old running operations that are hung in * the in-progress state. * * @return the default operation timeout, or <code>null</code> if not defined * * @see OperationManagerLocal#checkForTimedOutOperations() */ Integer getDefaultOperationTimeout(); /** * This creates the scheduler but does not start it. Calling this method will NOT start executing jobs. * * @throws SchedulerException */ void initQuartzScheduler() throws SchedulerException; /** * This actually starts the scheduler. Calling this method will start executing jobs. Make sure when you call this * method that the server is fully up and all EJBs are deployed. * * @throws SchedulerException */ void startQuartzScheduler() throws SchedulerException; String getSchedulerName() throws SchedulerException; String getSchedulerInstanceId() throws SchedulerException; SchedulerContext getContext() throws SchedulerException; SchedulerMetaData getMetaData() throws SchedulerException; /** * This method's semantics are overloaded since start() is used both by the Quartz interface and the JBossAS MBean * service interface. Calling this method does <b>not</b> start the Quartz scheduler. It only starts the MBean * service. To actually start the Quartz scheduler, the MBean service must have been started (that is, this method * called) <b>and</b> {@link #startQuartzScheduler()} must be called. * * @throws SchedulerException * * @see #startQuartzScheduler() */ void start() throws SchedulerException; void pause() throws SchedulerException; boolean isPaused() throws SchedulerException; void shutdown() throws SchedulerException; void shutdown(boolean waitForJobsToComplete) throws SchedulerException; boolean isShutdown() throws SchedulerException; List getCurrentlyExecutingJobs() throws SchedulerException; Date scheduleJob(JobDetail jobDetail, Trigger trigger) throws SchedulerException; Date scheduleJob(Trigger trigger) throws SchedulerException; void addJob(JobDetail jobDetail, boolean replace) throws SchedulerException; boolean deleteJob(String jobName, String groupName) throws SchedulerException; boolean unscheduleJob(String triggerName, String groupName) throws SchedulerException; void triggerJob(String jobName, String groupName) throws SchedulerException; void triggerJobWithVolatileTrigger(String jobName, String groupName) throws SchedulerException; void pauseTrigger(String triggerName, String groupName) throws SchedulerException; void pauseTriggerGroup(String groupName) throws SchedulerException; void pauseJob(String jobName, String groupName) throws SchedulerException; void pauseJobGroup(String groupName) throws SchedulerException; void resumeTrigger(String triggerName, String groupName) throws SchedulerException; void resumeTriggerGroup(String groupName) throws SchedulerException; void resumeJob(String jobName, String groupName) throws SchedulerException; void resumeJobGroup(String groupName) throws SchedulerException; String[] getJobGroupNames() throws SchedulerException; String[] getJobNames(String groupName) throws SchedulerException; Trigger[] getTriggersOfJob(String jobName, String groupName) throws SchedulerException; String[] getTriggerGroupNames() throws SchedulerException; String[] getTriggerNames(String groupName) throws SchedulerException; JobDetail getJobDetail(String jobName, String jobGroup) throws SchedulerException; Trigger getTrigger(String triggerName, String triggerGroup) throws SchedulerException; boolean deleteCalendar(String calName) throws SchedulerException; Calendar getCalendar(String calName) throws SchedulerException; String[] getCalendarNames() throws SchedulerException; void addGlobalJobListener(JobListener jobListener) throws SchedulerException; void addJobListener(JobListener jobListener) throws SchedulerException; boolean removeGlobalJobListener(JobListener jobListener) throws SchedulerException; boolean removeJobListener(String name) throws SchedulerException; List getGlobalJobListeners() throws SchedulerException; Set getJobListenerNames() throws SchedulerException; JobListener getJobListener(String name) throws SchedulerException; void addGlobalTriggerListener(TriggerListener triggerListener) throws SchedulerException; void addTriggerListener(TriggerListener triggerListener) throws SchedulerException; boolean removeGlobalTriggerListener(TriggerListener triggerListener) throws SchedulerException; boolean removeTriggerListener(String name) throws SchedulerException; List getGlobalTriggerListeners() throws SchedulerException; Set getTriggerListenerNames() throws SchedulerException; TriggerListener getTriggerListener(String name) throws SchedulerException; void addSchedulerListener(SchedulerListener schedulerListener) throws SchedulerException; boolean removeSchedulerListener(SchedulerListener schedulerListener) throws SchedulerException; List getSchedulerListeners() throws SchedulerException; void addCalendar(String calName, Calendar calendar, boolean replace, boolean updateTriggers) throws SchedulerException; Set getPausedTriggerGroups() throws SchedulerException; int getTriggerState(String triggerName, String triggerGroup) throws SchedulerException; boolean interrupt(String jobName, String groupName) throws org.quartz.UnableToInterruptJobException; boolean isInStandbyMode() throws SchedulerException; void pauseAll() throws SchedulerException; Date rescheduleJob(String triggerName, String groupName, Trigger newTrigger) throws SchedulerException; void resumeAll() throws SchedulerException; void setJobFactory(JobFactory factory) throws SchedulerException; void standby() throws SchedulerException; void triggerJob(String jobName, String groupName, JobDataMap data) throws SchedulerException; void triggerJobWithVolatileTrigger(String jobName, String groupName, JobDataMap data) throws SchedulerException; }