public synchronized final void stop()
    	throws InterruptedException
    {
        if (!_started || _stopping)
            return;
        _stopping=true;

        if (log.isDebugEnabled()) log.debug("Stopping "+this);
        LifeCycleEvent event = new LifeCycleEvent(this);
        for(int i=0;i<LazyList.size(_eventListeners);i++)
        {
            EventListener listener=(EventListener)LazyList.get(_eventListeners,i);
            if (listener instanceof LifeCycleListener)
                ((LifeCycleListener)listener).lifeCycleStopping(event);
        }
        
        try
        {	
            doStop();
            _started=false;
            log.info("Stopped "+this);
            for(int i=0;i<LazyList.size(_eventListeners);i++)
            {
                EventListener listener=(EventListener)LazyList.get(_eventListeners,i);
                if (listener instanceof LifeCycleListener)
                    ((LifeCycleListener)listener).lifeCycleStopped(event);
            }
        }
        catch(Throwable e)
        {
            event = new LifeCycleEvent(this,e);
            for(int i=0;i<LazyList.size(_eventListeners);i++)
            {
                EventListener listener=(EventListener)LazyList.get(_eventListeners,i);
                if (listener instanceof LifeCycleListener)
                    ((LifeCycleListener)listener).lifeCycleFailure(event);
            }
            if (e instanceof InterruptedException)
                throw (InterruptedException)e;
            if (e instanceof RuntimeException)
                throw (RuntimeException)e;
            if (e instanceof Error)
                throw (Error)e;
            log.warn(LogSupport.EXCEPTION, e);
        }
        finally
        {
            _stopping=false;
        }
    }
public synchronized final void stop ( ) throws InterruptedException { if ( ! _started || _stopping ) return ; _stopping = true ; if ( log . isDebugEnabled ( ) ) log . debug ( "Stopping " + this ) ; LifeCycleEvent event = new LifeCycleEvent ( this ) ; for ( int i = 0 ; i < LazyList . size ( _eventListeners ) ; i ++ ) { EventListener listener = ( EventListener ) LazyList . get ( _eventListeners , i ) ; if ( listener instanceof LifeCycleListener ) ( ( LifeCycleListener ) listener ) . lifeCycleStopping ( event ) ; } try { doStop ( ) ; _started = false ; log . info ( "Stopped " + this ) ; for ( int i = 0 ; i < LazyList . size ( _eventListeners ) ; i ++ ) { EventListener listener = ( EventListener ) LazyList . get ( _eventListeners , i ) ; if ( listener instanceof LifeCycleListener ) ( ( LifeCycleListener ) listener ) . lifeCycleStopped ( event ) ; } } catch ( Throwable e ) { event = new LifeCycleEvent ( this , e ) ; for ( int i = 0 ; i < LazyList . size ( _eventListeners ) ; i ++ ) { EventListener listener = ( EventListener ) LazyList . get ( _eventListeners , i ) ; if ( listener instanceof LifeCycleListener ) ( ( LifeCycleListener ) listener ) . lifeCycleFailure ( event ) ; } if ( e instanceof InterruptedException ) throw ( InterruptedException ) e ; if ( e instanceof RuntimeException ) throw ( RuntimeException ) e ; if ( e instanceof Error ) throw ( Error ) e ; log . warn ( LogSupport . EXCEPTION , e ) ; } finally { _stopping = false ; } }
Stop the container.
Generate LifeCycleEvents for stopping and stopped either side of a call to doStop