org.quartz.impl
Class DirectSchedulerFactory

java.lang.Object
  extended byorg.quartz.impl.DirectSchedulerFactory
All Implemented Interfaces:
SchedulerFactory

public class DirectSchedulerFactory
extends java.lang.Object
implements SchedulerFactory

A singleton implementation of SchedulerFactory.

Here are some examples of using this class:

To create a scheduler that does not write anything to the database (is not persistent), you can call createVolatileScheduler:

      DirectSchedulerFactory.getInstance().createVolatileScheduler(10); // 10 threads
 
      // don't forget to start the scheduler:
      DirectSchedulerFactory.getInstance().getScheduler().start();
 

Several create methods are provided for convenience. All create methods eventually end up calling the create method with all the parameters:

   public void createScheduler(String schedulerName, String schedulerInstanceId,
      ThreadPool threadPool, JobStore jobStore, String rmiRegistryHost, int rmiRegistryPort)
 

Here is an example of using this method:

      // create the thread pool
      SimpleThreadPool threadPool = new SimpleThreadPool(maxThreads, Thread.NORM_PRIORITY);
      threadPool.initialize();

      // create the job store
      JobStore jobStore = new RAMJobStore();
      jobStore.initialize();

      DirectSchedulerFactory.getInstance().createScheduler("My Quartz Scheduler", "My Instance",
          threadPool, jobStore, "localhost", 1099);

      // don't forget to start the scheduler:
      DirectSchedulerFactory.getInstance().getScheduler("My Quartz Scheduler", "My Instance").start();
 

You can also use a JDBCJobStore instead of the RAMJobStore:

      DBConnectionManager.getInstance().addConnectionProvider("someDatasource", new JNDIConnectionProvider("someDatasourceJNDIName"));

      JDBCJobStore jdbcJobStore = new JDBCJobStore();
      jdbcJobStore.setDataSource("someDatasource");
      jdbcJobStore.setPostgresStyleBlobs(true);
      jdbcJobStore.setTablePrefix("QRTZ_");
      jdbcJobStore.setInstanceId("My Instance");
      jdbcJobStore.initialize();
 

Author:
Mohammad Rezaei, James House
See Also:
JobStore, ThreadPool

Field Summary
static java.lang.String DEFAULT_INSTANCE_ID
           
static java.lang.String DEFAULT_SCHEDULER_NAME
           
 
Constructor Summary
protected DirectSchedulerFactory()
          Constructor
 
Method Summary
 void createRemoteScheduler(java.lang.String rmiHost, int rmiPort)
          Creates a proxy to a remote scheduler.
protected  void createRemoteScheduler(java.lang.String schedulerName, java.lang.String schedulerInstanceId, java.lang.String rmiHost, int rmiPort)
          Same as createRemoteScheduler(String rmiHost, int rmiPort), with the addition of specifying the scheduler name and instance ID.
 void createScheduler(java.lang.String schedulerName, java.lang.String schedulerInstanceId, ThreadPool threadPool, JobStore jobStore)
          Same as createScheduler(ThreadPool threadPool, JobStore jobStore), with the addition of specifying the scheduler name and instance ID.
 void createScheduler(java.lang.String schedulerName, java.lang.String schedulerInstanceId, ThreadPool threadPool, JobStore jobStore, java.lang.String rmiRegistryHost, int rmiRegistryPort, int idleWaitTime)
          Creates a scheduler using the specified thread pool and job store and binds it to RMI.
 void createScheduler(ThreadPool threadPool, JobStore jobStore)
          Creates a scheduler using the specified thread pool and job store.
 void createVolatileSchduler(int maxThreads)
          Creates an in memory job store (RAMJobStore) The thread priority is set to Thread.NORM_PRIORITY
 Scheduler[] getAllSchedulers()
          Returns a handle to all known Schedulers (made by any StdSchedulerFactory instance.).
static DirectSchedulerFactory getInstance()
           
 Scheduler getScheduler()
          Returns a handle to the Scheduler produced by this factory.
 Scheduler getScheduler(java.lang.String schedName, java.lang.String schedInstId)
          Returns a handle to the Scheduler with the given name and instance Id, if it exists.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DEFAULT_INSTANCE_ID

public static final java.lang.String DEFAULT_INSTANCE_ID
See Also:
Constant Field Values

DEFAULT_SCHEDULER_NAME

public static final java.lang.String DEFAULT_SCHEDULER_NAME
See Also:
Constant Field Values
Constructor Detail

DirectSchedulerFactory

protected DirectSchedulerFactory()
Constructor

Method Detail

getInstance

public static DirectSchedulerFactory getInstance()

createVolatileSchduler

public void createVolatileSchduler(int maxThreads)
                            throws SchedulerException
Creates an in memory job store (RAMJobStore) The thread priority is set to Thread.NORM_PRIORITY

Parameters:
maxThreads - The number of threads in the thread pool
Throws:
SchedulerException - if initialization failed.

createRemoteScheduler

public void createRemoteScheduler(java.lang.String rmiHost,
                                  int rmiPort)
                           throws SchedulerException
Creates a proxy to a remote scheduler. This scheduler can be retrieved via getScheduler()

Parameters:
rmiHost - The hostname for remote scheduler
rmiPort - Port for the remote scheduler. The default RMI port is 1099.
Throws:
SchedulerException - if the remote scheduler could not be reached.

createRemoteScheduler

protected void createRemoteScheduler(java.lang.String schedulerName,
                                     java.lang.String schedulerInstanceId,
                                     java.lang.String rmiHost,
                                     int rmiPort)
                              throws SchedulerException
Same as createRemoteScheduler(String rmiHost, int rmiPort), with the addition of specifying the scheduler name and instance ID. This scheduler can only be retrieved via getScheduler(java.lang.String schedulerName, java.lang.String schedulerInstanceId)

Parameters:
schedulerName - The name for the scheduler.
schedulerInstanceId - The instance ID for the scheduler.
rmiHost - The hostname for remote scheduler
rmiPort - Port for the remote scheduler. The default RMI port is 1099.
Throws:
SchedulerException - if the remote scheduler could not be reached.

createScheduler

public void createScheduler(ThreadPool threadPool,
                            JobStore jobStore)
                     throws SchedulerException
Creates a scheduler using the specified thread pool and job store. This scheduler can be retrieved via getScheduler()

Parameters:
threadPool - The thread pool for executing jobs
jobStore - The type of job store
Throws:
SchedulerException - if initialization failed

createScheduler

public void createScheduler(java.lang.String schedulerName,
                            java.lang.String schedulerInstanceId,
                            ThreadPool threadPool,
                            JobStore jobStore)
                     throws SchedulerException
Same as createScheduler(ThreadPool threadPool, JobStore jobStore), with the addition of specifying the scheduler name and instance ID. This scheduler can only be retrieved via getScheduler(java.lang.String schedulerName, java.lang.String schedulerInstanceId)

Parameters:
schedulerName - The name for the scheduler.
schedulerInstanceId - The instance ID for the scheduler.
threadPool - The thread pool for executing jobs
jobStore - The type of job store
Throws:
SchedulerException - if initialization failed

createScheduler

public void createScheduler(java.lang.String schedulerName,
                            java.lang.String schedulerInstanceId,
                            ThreadPool threadPool,
                            JobStore jobStore,
                            java.lang.String rmiRegistryHost,
                            int rmiRegistryPort,
                            int idleWaitTime)
                     throws SchedulerException
Creates a scheduler using the specified thread pool and job store and binds it to RMI.

Parameters:
schedulerName - The name for the scheduler.
schedulerInstanceId - The instance ID for the scheduler.
threadPool - The thread pool for executing jobs
jobStore - The type of job store
rmiRegistryHost - The hostname to register this scheduler with for RMI. Can use "null" if no RMI is required.
rmiRegistryPort - The port for RMI. Typically 1099.
idleWaitTime - The idle wait time in milliseconds. You can specify "-1" for the default value, which is currently 30000 ms.
Throws:
SchedulerException - if initialization failed

getScheduler

public Scheduler getScheduler()
                       throws SchedulerException

Returns a handle to the Scheduler produced by this factory.

you must call createRemoteScheduler or createScheduler methods before calling getScheduler()

Specified by:
getScheduler in interface SchedulerFactory
Throws:
SchedulerException - if there is a problem with the underlying Scheduler.

getScheduler

public Scheduler getScheduler(java.lang.String schedName,
                              java.lang.String schedInstId)
                       throws SchedulerException

Returns a handle to the Scheduler with the given name and instance Id, if it exists.

Throws:
SchedulerException

getAllSchedulers

public Scheduler[] getAllSchedulers()
                             throws SchedulerException

Returns a handle to all known Schedulers (made by any StdSchedulerFactory instance.).

Throws:
SchedulerException


Copyright James House (c) 2001-2004