Timers can be canceled by the following events:
When a single-event timer expires, the EJB container calls the @Timeout method and then cancels the timer.
When the bean invokes the cancel method of the Timer interface, the container cancels the timer.
If a method is invoked on a canceled timer, the container throws the javax.ejb.NoSuchObjectLocalException.
To save a Timer object for future reference, invoke its getHandle method and store the TimerHandle object in a database. (A TimerHandle object is serializable.) To re-instantiate the Timer object, retrieve the handle from the database and invoke getTimer on the handle. A TimerHandle object cannot be passed as an argument of a method defined in a remote or web service interface. In other words, remote clients and web service clients cannot access a bean’s TimerHandle object. Local clients, however, do not have this restriction.