public synchronized void schedule()
    {
        // Avoid scheduling a timer that was destroyed on another thread and
        // avoid scheduling a timer twice, which might be attempted if two
        // threads concurrently attempt to cancel and then both rollback.
        if (ivTaskHandler == null && !ivDestroyed)
        {
            // Create the timer task handler (Runnable/Listener) and schedule the task
            ivTaskHandler = ivContainer.getEJBRuntime().createNonPersistentTimerTaskHandler(this);

            if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
                Tr.debug(tc, "schedule: scheduling timer for " + ivExpiration + " / " + new Date(ivExpiration));

            ivTaskHandler.schedule(ivExpiration);
        }
        else
        {
            if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
                Tr.debug(tc, "schedule: timer already scheduled or destroyed : destroyed=" + ivDestroyed);
        }
    }
public synchronized void schedule ( ) { if ( ivTaskHandler == null && ! ivDestroyed ) { ivTaskHandler = ivContainer . getEJBRuntime ( ) . createNonPersistentTimerTaskHandler ( this ) ; if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isDebugEnabled ( ) ) Tr . debug ( tc , "schedule: scheduling timer for " + ivExpiration + " / " + new Date ( ivExpiration ) ) ; ivTaskHandler . schedule ( ivExpiration ) ; } else { if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isDebugEnabled ( ) ) Tr . debug ( tc , "schedule: timer already scheduled or destroyed : destroyed=" + ivDestroyed ) ; } }
Schedules the timer to actually run. <p>

This method should only be called by EJBApplicationMetaData once
the application has fully started.