org.jboss.varia.scheduler
Class AbstractScheduleProvider

java.lang.Object
  extended by org.jboss.mx.util.JBossNotificationBroadcasterSupport
      extended by org.jboss.system.ServiceMBeanSupport
          extended by org.jboss.varia.scheduler.AbstractScheduleProvider
All Implemented Interfaces:
javax.management.MBeanRegistration, javax.management.NotificationBroadcaster, javax.management.NotificationEmitter, org.jboss.system.Service, org.jboss.system.ServiceMBean, AbstractScheduleProviderMBean
Direct Known Subclasses:
DBScheduleProvider, SingleScheduleProvider, XMLScheduleProvider

public abstract class AbstractScheduleProvider
extends org.jboss.system.ServiceMBeanSupport
implements AbstractScheduleProviderMBean

Abstract Base Class for Schedule Providers. The class used to extend HASingletonSupport, but not anymore. We can achieve the same effect without a dependency on HA jars using just a depends clause that starts/stops the schedule provide using the notifications produced by another HASingleton (see JBAS-3082)

Version:
$Revision: 1.5.6.3 $
Author:
Andreas Schaefer, Ivelin Ivanov, Dimitris Andreadis

Field Summary
 
Fields inherited from class org.jboss.system.ServiceMBeanSupport
log, server, SERVICE_CONTROLLER_SIG, serviceName
 
Fields inherited from interface org.jboss.system.ServiceMBean
CREATE_EVENT, CREATED, DESTROY_EVENT, DESTROYED, FAILED, REGISTERED, START_EVENT, STARTED, STARTING, states, STOP_EVENT, STOPPED, STOPPING, UNREGISTERED
 
Constructor Summary
AbstractScheduleProvider()
          Default (no-args) Constructor
 
Method Summary
protected  int addSchedule(javax.management.ObjectName pTarget, String pMethodName, String[] pMethodSignature, Date pStart, long pPeriod, int pRepetitions)
          Add a single Schedule to the Schedule Manager
 javax.management.ObjectName getScheduleManagerName()
          Get the Schedule Manager Name
protected  void removeSchedule(int pID)
          Remove a Schedule from the Schedule Manager
 void setScheduleManagerName(javax.management.ObjectName scheduleManagerName)
          Set the Schedule Manager Name
abstract  void startProviding()
          Add the Schedules to the Schedule Manager
protected  void startScheduleProviderService()
          Registers this schedule provider to the schedule manager
protected  void startService()
          When the Service is started it will register itself at the Schedule Manager which makes it necessary that the Schedule Manager is already running.
abstract  void stopProviding()
          Stops the Provider from providing and causing him to remove all Schedules
protected  void stopScheduleProviderService()
          Unregisters this schedule provider to the schedule manager
protected  void stopService()
          When the Service is stopped it will unregister itself at the Schedule Manager.
 
Methods inherited from class org.jboss.system.ServiceMBeanSupport
create, createService, destroy, destroyService, getDeploymentInfo, getLog, getName, getNextNotificationSequenceNumber, getObjectName, getServer, getServiceName, getState, getStateString, jbossInternalCreate, jbossInternalDescription, jbossInternalDestroy, jbossInternalLifecycle, jbossInternalStart, jbossInternalStop, postDeregister, postRegister, preDeregister, preRegister, start, stop
 
Methods inherited from class org.jboss.mx.util.JBossNotificationBroadcasterSupport
addNotificationListener, getNotificationInfo, handleNotification, nextNotificationSequenceNumber, removeNotificationListener, removeNotificationListener, sendNotification
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.jboss.system.ServiceMBean
getName, getState, getStateString, jbossInternalLifecycle
 
Methods inherited from interface org.jboss.system.Service
create, destroy, start, stop
 

Constructor Detail

AbstractScheduleProvider

public AbstractScheduleProvider()
Default (no-args) Constructor

Method Detail

getScheduleManagerName

public javax.management.ObjectName getScheduleManagerName()
Get the Schedule Manager Name

Specified by:
getScheduleManagerName in interface AbstractScheduleProviderMBean

setScheduleManagerName

public void setScheduleManagerName(javax.management.ObjectName scheduleManagerName)
Set the Schedule Manager Name

Specified by:
setScheduleManagerName in interface AbstractScheduleProviderMBean

startProviding

public abstract void startProviding()
                             throws Exception
Add the Schedules to the Schedule Manager

Specified by:
startProviding in interface AbstractScheduleProviderMBean
Throws:
Exception

stopProviding

public abstract void stopProviding()
Stops the Provider from providing and causing him to remove all Schedules

Specified by:
stopProviding in interface AbstractScheduleProviderMBean

addSchedule

protected int addSchedule(javax.management.ObjectName pTarget,
                          String pMethodName,
                          String[] pMethodSignature,
                          Date pStart,
                          long pPeriod,
                          int pRepetitions)
                   throws javax.management.JMException
Add a single Schedule to the Schedule Manager

Parameters:
pTarget - Object Name of the target MBean (receiver of the time notification)
pMethodName - Name of the Method to be called on the target
pMethodSignature - Signature of the Method
pStart - Date when the Schedule has to start
pPeriod - Time between two notifications
pRepetitions - Number of repetitions (-1 for unlimited)
Returns:
Identification of the Schedule which is used to remove it later
Throws:
javax.management.JMException

removeSchedule

protected void removeSchedule(int pID)
                       throws javax.management.JMException
Remove a Schedule from the Schedule Manager

Parameters:
pID - Identification of the Schedule
Throws:
javax.management.JMException

startService

protected void startService()
                     throws Exception
When the Service is started it will register itself at the Schedule Manager which makes it necessary that the Schedule Manager is already running. This allows the Schedule Manager to call startProviding() which is the point for the Provider to add the Schedules on the Schedule Manager. ATTENTION: If you overwrite this method in a subclass you have to call this method (super.startService())

Overrides:
startService in class org.jboss.system.ServiceMBeanSupport
Throws:
Exception

stopService

protected void stopService()
                    throws Exception
When the Service is stopped it will unregister itself at the Schedule Manager. This allows the Schedule Manager to remove the Provider from its list and then call stopProviding() which is the point for the Provider to remove the Schedules from the Schedule Manager. ATTENTION: If you overwrite this method in a subclass you have to call this method (super.stopService())

Overrides:
stopService in class org.jboss.system.ServiceMBeanSupport
Throws:
Exception

startScheduleProviderService

protected void startScheduleProviderService()
                                     throws javax.management.InstanceNotFoundException,
                                            javax.management.MBeanException,
                                            javax.management.ReflectionException
Registers this schedule provider to the schedule manager

Throws:
javax.management.InstanceNotFoundException
javax.management.MBeanException
javax.management.ReflectionException

stopScheduleProviderService

protected void stopScheduleProviderService()
                                    throws javax.management.InstanceNotFoundException,
                                           javax.management.MBeanException,
                                           javax.management.ReflectionException
Unregisters this schedule provider to the schedule manager

Throws:
javax.management.InstanceNotFoundException
javax.management.MBeanException
javax.management.ReflectionException


Copyright © 2002 JBoss Group, LLC. All Rights Reserved.