Spring Framework

org.springframework.scheduling.commonj
Class TimerManagerAccessor

java.lang.Object
  extended by org.springframework.jndi.JndiAccessor
      extended by org.springframework.jndi.JndiLocatorSupport
          extended by org.springframework.scheduling.commonj.TimerManagerAccessor
All Implemented Interfaces:
DisposableBean, InitializingBean, Lifecycle
Direct Known Subclasses:
TimerManagerFactoryBean, TimerManagerTaskScheduler

public abstract class TimerManagerAccessor
extends JndiLocatorSupport
implements InitializingBean, DisposableBean, Lifecycle

Base class for classes that are accessing a CommonJ TimerManager Defines common configuration settings and common lifecycle handling.

Since:
3.0
Author:
Juergen Hoeller
See Also:
TimerManager

Field Summary
 
Fields inherited from class org.springframework.jndi.JndiLocatorSupport
CONTAINER_PREFIX
 
Fields inherited from class org.springframework.jndi.JndiAccessor
logger
 
Constructor Summary
TimerManagerAccessor()
           
 
Method Summary
 void afterPropertiesSet()
          Invoked by a BeanFactory after it has set all bean properties supplied (and satisfied BeanFactoryAware and ApplicationContextAware).
 void destroy()
          Stops the underlying TimerManager (if not shared).
protected  commonj.timers.TimerManager getTimerManager()
           
 boolean isRunning()
          Considers the underlying TimerManager as running if it is neither suspending nor stopping.
 void setShared(boolean shared)
          Specify whether the TimerManager obtained by this FactoryBean is a shared instance ("true") or an independent instance ("false").
 void setTimerManager(commonj.timers.TimerManager timerManager)
          Specify the CommonJ TimerManager to delegate to.
 void setTimerManagerName(java.lang.String timerManagerName)
          Set the JNDI name of the CommonJ TimerManager.
 void start()
          Resumes the underlying TimerManager (if not shared).
 void stop()
          Suspends the underlying TimerManager (if not shared).
 
Methods inherited from class org.springframework.jndi.JndiLocatorSupport
convertJndiName, isResourceRef, lookup, lookup, setResourceRef
 
Methods inherited from class org.springframework.jndi.JndiAccessor
getJndiEnvironment, getJndiTemplate, setJndiEnvironment, setJndiTemplate
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

TimerManagerAccessor

public TimerManagerAccessor()
Method Detail

setTimerManager

public void setTimerManager(commonj.timers.TimerManager timerManager)
Specify the CommonJ TimerManager to delegate to.

Note that the given TimerManager's lifecycle will be managed by this FactoryBean.

Alternatively (and typically), you can specify the JNDI name of the target TimerManager.

See Also:
setTimerManagerName(java.lang.String)

setTimerManagerName

public void setTimerManagerName(java.lang.String timerManagerName)
Set the JNDI name of the CommonJ TimerManager.

This can either be a fully qualified JNDI name, or the JNDI name relative to the current environment naming context if "resourceRef" is set to "true".

See Also:
setTimerManager(commonj.timers.TimerManager), JndiLocatorSupport.setResourceRef(boolean)

setShared

public void setShared(boolean shared)
Specify whether the TimerManager obtained by this FactoryBean is a shared instance ("true") or an independent instance ("false"). The lifecycle of the former is supposed to be managed by the application server, while the lifecycle of the latter is up to the application.

Default is "false", i.e. managing an independent TimerManager instance. This is what the CommonJ specification suggests that application servers are supposed to offer via JNDI lookups, typically declared as a resource-ref of type commonj.timers.TimerManager in web.xml, with res-sharing-scope set to 'Unshareable'.

Switch this flag to "true" if you are obtaining a shared TimerManager, typically through specifying the JNDI location of a TimerManager that has been explicitly declared as 'Shareable'. Note that WebLogic's cluster-aware Job Scheduler is a shared TimerManager too.

The sole difference between this FactoryBean being in shared or non-shared mode is that it will only attempt to suspend / resume / stop the underlying TimerManager in case of an independent (non-shared) instance. This only affects the Lifecycle support as well as application context shutdown.

See Also:
stop(), start(), destroy(), TimerManager

afterPropertiesSet

public void afterPropertiesSet()
                        throws javax.naming.NamingException
Description copied from interface: InitializingBean
Invoked by a BeanFactory after it has set all bean properties supplied (and satisfied BeanFactoryAware and ApplicationContextAware).

This method allows the bean instance to perform initialization only possible when all bean properties have been set and to throw an exception in the event of misconfiguration.

Specified by:
afterPropertiesSet in interface InitializingBean
Throws:
javax.naming.NamingException

getTimerManager

protected final commonj.timers.TimerManager getTimerManager()

start

public void start()
Resumes the underlying TimerManager (if not shared).

Specified by:
start in interface Lifecycle
See Also:
TimerManager.resume()

stop

public void stop()
Suspends the underlying TimerManager (if not shared).

Specified by:
stop in interface Lifecycle
See Also:
TimerManager.suspend()

isRunning

public boolean isRunning()
Considers the underlying TimerManager as running if it is neither suspending nor stopping.

Specified by:
isRunning in interface Lifecycle
Returns:
whether the component is currently running
See Also:
TimerManager.isSuspending(), TimerManager.isStopping()

destroy

public void destroy()
Stops the underlying TimerManager (if not shared).

Specified by:
destroy in interface DisposableBean
See Also:
TimerManager.stop()

Spring Framework