All Downloads are FREE. Search and download functionalities are using the official Maven repository.

javax.slee.facilities.TimerFacility Maven / Gradle / Ivy

The newest version!
package javax.slee.facilities;

import javax.slee.Address;
import javax.slee.ActivityContextInterface;
import javax.slee.TransactionRolledbackLocalException;
import javax.slee.TransactionRequiredLocalException;

/**
 * The Timer Facility allows an SBB entity to set and cancel timers.  Timers
 * are identified by a serializable {@link TimerID} object.  When a new
 * timer is set, the Timer Facility generates a {@link TimerID} that
 * identifies the timer.  The timer can be cancelled at a later time by passing
 * this {@link TimerID} to the {@link #cancelTimer} method.
 * 

* This facility is transactional in nature. Timers are only set or cancelled * if the transaction in which their setup or cancellation took place commits * successfully. A timer may be set and cancelled in the same transaction, in * which case the Timer Facility can consider it never set. *

* An SBB obtains access to a TimerFacility object via its JNDI * environment. The Timer Facility is bound into JNDI using the name specified * by {@link #JNDI_NAME}. *

*Timer Resolution
* Although the unit for the period of a periodic timer is specified in * milliseconds, a Timer Facility implementation may be limited by the * available clock resolution and/or scheduler implementation of the * underlying platform. The approximate timer resolution of the Timer Facility * can be obtained via {@link #getResolution}, allowing SBB entities to create * timers that take into account the timer resolution of the Timer Facility. * * @see TimerOptions * @see TimerEvent */ public interface TimerFacility { /** * Constant declaring the JNDI name where a TimerFacility object * is bound into an SBB's JNDI environment. *

* The value of this constant is "java:comp/env/slee/facilities/timer". * @since SLEE 1.1 */ public static final String JNDI_NAME = "java:comp/env/slee/facilities/timer"; /** * Set a non-periodic timer. A single timer event is generated when the * timer expires, after which the timer ceases to exist. The timer event * is delivered on the specified Activity Context. *

* If the expiry time is in the past, the timer event is fired immediately * after the transaction commits (subject to the options specified for the * timer). *

* This method is a required transactional method. * @param aci the Activity Context on which the timer event should be * fired. * @param address the optional default address on which the timer event * should be fired. * @param expireTime the time (in ms since January 1, 1970 UTC) that the * timer event should be fired. * @param options the desired behavior of the timer. * @return the timer ID of the timer that was set. * @throws NullPointerException if aci or * options is null. * @throws IllegalArgumentException if expireTime is less * than zero. * @throws TransactionRolledbackLocalException if this method was invoked without * a valid transaction context and the transaction started by this method * failed to commit. * @throws FacilityException if the timer could not be set due to a * system-level failure. */ public TimerID setTimer(ActivityContextInterface aci, Address address, long expireTime, TimerOptions options) throws NullPointerException, IllegalArgumentException, TransactionRolledbackLocalException, FacilityException; /** * Set a periodic timer. When the start time of a periodic timer has been * reached, a timer event is generated and the timer continues, generating * further timer events at the rate specified by the timer's period. A * periodic timer may have either a finite or infinite number of * repetitions. Timer events are delivered on the specified Activity * Context. *

* If the start time is in the past, the initial timer event is fired * immediately after the transaction commits (subject to the options * specified for the timer). Further timer events may be generated * (subject to the options specified for the timer) while the timer * catches up with the current system time. *

* This method is a required transactional method. * @param aci the Activity Context on which timer events should be fired. * @param address the optional default address on which timer events * should be fired. * @param startTime the time (in ms since January 1, 1970 UTC) at which * the periodic timer should first fire. * @param period the period (in milliseconds) between timer events. * @param numRepetitions the maximum number of timer events that should be * generated by the timer. If this argument is 0 an * infinitely repeating timer is set. * @param options the desired behavior of the timer. * @return the timer ID of the timer that was set. * @throws NullPointerException if aci or * options is null. * @throws IllegalArgumentException if startTime or * numRepetitions is less than zero, period is * not greater than zero, or the timeout specified in options * is greater than period. * @throws TransactionRolledbackLocalException if this method was invoked without * a valid transaction context and the transaction started by this method * failed to commit. * @throws FacilityException if the timer could not be set due to a * system-level failure. */ public TimerID setTimer(ActivityContextInterface aci, Address address, long startTime, long period, int numRepetitions, TimerOptions options) throws NullPointerException, IllegalArgumentException, TransactionRolledbackLocalException, FacilityException; /** * Cancel a previously set timer. *

* This method has no effect if the timer has already been cancelled. *

* This method is a required transactional method. * @param timerID the timer ID of the timer to cancel. * @throws NullPointerException if timerID is * null. * @throws TransactionRolledbackLocalException if this method was invoked without * a valid transaction context and the transaction started by this method * failed to commit. * @throws FacilityException if the timer could not be cancelled due to a * system-level failure. */ public void cancelTimer(TimerID timerID) throws NullPointerException, TransactionRolledbackLocalException, FacilityException; /** * Get a reference to the Activity Context on which a timer was set. It is * possible to obtain a reference to the Activity Context for timers which * have expired, however it is not possible to obtain an Activity Context * for activities that have already ended in the SLEE. *

* This method is a mandatory transactional method. * @param timerID the timer ID of the timer. * @return an ActivityContextInterface object that encapsulates * the Activity Context on which the timer was set. If the underlying * activity has already ended, this method returns null. * @throws NullPointerException if timerID is null. * @throws TransactionRequiredLocalException if this method is invoked without a * valid transaction context. * @throws FacilityException if the Activity Context could not be obtained due * to a system-level failure. * @since SLEE 1.1 */ public ActivityContextInterface getActivityContextInterface(TimerID timerID) throws NullPointerException, TransactionRequiredLocalException, FacilityException; /** * Get the approximate timer resolution of the Timer Facility. *

* This method is a non-transactional method. * @return the approximate timer resolution (in milliseconds). * @throws FacilityException if the timer resolution could not be obtained * due to a system-level failure. */ public long getResolution() throws FacilityException; /** * Get the default timeout period of the Timer Facility. *

* This method is a non-transactional method. * @return the default timeout period (in milliseconds). * @throws FacilityException if the default timeout period could not be * obtained due to a system-level failure. */ public long getDefaultTimeout() throws FacilityException; }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy