private void doWork() {
        boolean isTraceOn = TraceComponent.isAnyTracingEnabled();
        if (isTraceOn && tc.isEntryEnabled())
            Tr.entry(tc, "doWork: " + ivTimer);

        TimedObjectWrapper timedObject;
        try {
            ivBeanId = ivBeanId.getInitializedBeanId(); // F743-506CodRev
        } catch (Exception ex) {
            FFDCFilter.processException(ex, CLASS_NAME + ".doWork", "247", this);
            if (isTraceOn && tc.isEntryEnabled())
                Tr.exit(tc, "doWork: " + ex);
            throw ExceptionUtil.EJBException(ex);
        }
        EJSHome home = (EJSHome) ivBeanId.home;

        // Get the TimedObjectWrapper from the pool to execute the method.
        timedObject = home.getTimedObjectWrapper(ivBeanId);

        // Invoke ejbTimeout on the wrapper.  No need to handle exceptions,
        // as the wrapper will have already handled/mapped any exceptions
        // as expected.
        try {
            ivTimer.ivTimeoutThread = Thread.currentThread(); // d595255
            timedObject.invokeCallback(ivTimer, ivMethodId, false); // F743-506
        } finally {
            ivTimer.ivTimeoutThread = null; // d595255
            // Always return the TimedObjectWrapper to the pool.
            home.putTimedObjectWrapper(timedObject);

            if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
                Tr.exit(tc, "doWork");
        }
    }
private void doWork ( ) { boolean isTraceOn = TraceComponent . isAnyTracingEnabled ( ) ; if ( isTraceOn && tc . isEntryEnabled ( ) ) Tr . entry ( tc , "doWork: " + ivTimer ) ; TimedObjectWrapper timedObject ; try { ivBeanId = ivBeanId . getInitializedBeanId ( ) ; } catch ( Exception ex ) { FFDCFilter . processException ( ex , CLASS_NAME + ".doWork" , "247" , this ) ; if ( isTraceOn && tc . isEntryEnabled ( ) ) Tr . exit ( tc , "doWork: " + ex ) ; throw ExceptionUtil . EJBException ( ex ) ; } EJSHome home = ( EJSHome ) ivBeanId . home ; timedObject = home . getTimedObjectWrapper ( ivBeanId ) ; try { ivTimer . ivTimeoutThread = Thread . currentThread ( ) ; timedObject . invokeCallback ( ivTimer , ivMethodId , false ) ; } finally { ivTimer . ivTimeoutThread = null ; home . putTimedObjectWrapper ( timedObject ) ; if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isEntryEnabled ( ) ) Tr . exit ( tc , "doWork" ) ; } }
Performs the work associated with the scheduled EJB Timer. <p>

When the EJB Timer expires, this method will be called. A wrapper for
the target TimedObject bean will be obtained, and the ejbTimeout method
will be invoked. <p>

The wrapper is similar to a generated Local wrapper, and will activate
the bean as needed. It will also perform exception handling /
mapping as required by the EJB Specification.