Java 类org.apache.catalina.Lifecycle 实例源码

项目:tomcat7    文件:CombinedRealm.java   
/**
 * Ensure child Realms are destroyed when this Realm is destroyed.
 */
@Override
protected void destroyInternal() throws LifecycleException {
    for (Realm realm : realms) {
        if (realm instanceof Lifecycle) {
            ((Lifecycle) realm).destroy();
        }
    }
    super.destroyInternal();
}
项目:lazycat    文件:CombinedRealm.java   
/**
 * Prepare for the beginning of active use of the public methods of this
 * component and implement the requirements of
 * {@link org.apache.catalina.util.LifecycleBase#startInternal()}.
 *
 * @exception LifecycleException
 *                if this component detects a fatal error that prevents this
 *                component from being used
 */
@Override
protected void startInternal() throws LifecycleException {
    // Start 'sub-realms' then this one
    Iterator<Realm> iter = realms.iterator();

    while (iter.hasNext()) {
        Realm realm = iter.next();
        if (realm instanceof Lifecycle) {
            try {
                ((Lifecycle) realm).start();
            } catch (LifecycleException e) {
                // If realm doesn't start can't authenticate against it
                iter.remove();
                log.error(sm.getString("combinedRealm.realmStartFail", realm.getInfo()), e);
            }
        }
    }
    super.startInternal();
}
项目:jerrydog    文件:StandardHostDeployer.java   
/**
 * Stop an existing web application, attached to the specified context
 * path.  Only stops a web application if it is running.
 *
 * @param contextPath The context path of the application to be stopped
 *
 * @exception IllegalArgumentException if the specified context path
 *  is malformed (it must be "" or start with a slash)
 * @exception IllegalArgumentException if the specified context path does
 *  not identify a currently installed web application
 * @exception IOException if an input/output error occurs while stopping
 *  the web application
 */
public void stop(String contextPath) throws IOException {

    // Validate the format and state of our arguments
    if (contextPath == null)
        throw new IllegalArgumentException
            (sm.getString("standardHost.pathRequired"));
    if (!contextPath.equals("") && !contextPath.startsWith("/"))
        throw new IllegalArgumentException
            (sm.getString("standardHost.pathFormat", contextPath));
    Context context = findDeployedApp(contextPath);
    if (context == null)
        throw new IllegalArgumentException
            (sm.getString("standardHost.pathMissing", contextPath));
    host.log("standardHost.stop " + contextPath);
    try {
        ((Lifecycle) context).stop();
    } catch (LifecycleException e) {
        host.log("standardHost.stop " + contextPath + ": ", e);
        throw new IllegalStateException
            ("standardHost.stop " + contextPath + ": " + e);
    }

}
项目:tomcat7    文件:Tomcat.java   
@Override
public void lifecycleEvent(LifecycleEvent event) {
    try {
        Context context = (Context) event.getLifecycle();
        if (event.getType().equals(Lifecycle.CONFIGURE_START_EVENT)) {
            context.setConfigured(true);
        }
        // LoginConfig is required to process @ServletSecurity
        // annotations
        if (context.getLoginConfig() == null) {
            context.setLoginConfig(
                    new LoginConfig("NONE", null, null, null));
            context.getPipeline().addValve(new NonLoginAuthenticator());
        }
    } catch (ClassCastException e) {
        return;
    }
}
项目:jerrydog    文件:StandardServer.java   
/**
 * Prepare for the beginning of active use of the public methods of this
 * component.  This method should be called before any of the public
 * methods of this component are utilized.  It should also send a
 * LifecycleEvent of type START_EVENT to any registered listeners.
 *
 * @exception LifecycleException if this component detects a fatal error
 *  that prevents this component from being used
 */
public void start() throws LifecycleException {

    // Validate and update our current component state
    if (started)
        throw new LifecycleException
            (sm.getString("standardServer.start.started"));
    // Notify our interested LifecycleListeners
    lifecycle.fireLifecycleEvent(BEFORE_START_EVENT, null);

    lifecycle.fireLifecycleEvent(START_EVENT, null);
    started = true;

    // Start our defined Services
    synchronized (services) {
        for (int i = 0; i < services.length; i++) {
            if (services[i] instanceof Lifecycle)
                ((Lifecycle) services[i]).start();
        }
    }

    // Notify our interested LifecycleListeners
    lifecycle.fireLifecycleEvent(AFTER_START_EVENT, null);

}
项目:apache-tomcat-7.0.73-with-comment    文件:StandardPipeline.java   
/**
 * Start {@link Valve}s) in this pipeline and implement the requirements
 * of {@link LifecycleBase#startInternal()}.
 *
 * @exception LifecycleException if this component detects a fatal error
 *  that prevents this component from being used
 */
@Override
protected synchronized void startInternal() throws LifecycleException {

    // Start the Valves in our pipeline (including the basic), if any
    Valve current = first;
    if (current == null) {
        current = basic;
    }
    while (current != null) {
        if (current instanceof Lifecycle)
            ((Lifecycle) current).start();
        current = current.getNext();
    }

    setState(LifecycleState.STARTING);
}
项目:tomcat7    文件:CombinedRealm.java   
/**
 * Prepare for the beginning of active use of the public methods of this
 * component and implement the requirements of
 * {@link org.apache.catalina.util.LifecycleBase#startInternal()}.
 *
 * @exception LifecycleException if this component detects a fatal error
 *  that prevents this component from being used
 */
@Override
protected void startInternal() throws LifecycleException {
    // Start 'sub-realms' then this one
    Iterator<Realm> iter = realms.iterator();

    while (iter.hasNext()) {
        Realm realm = iter.next();
        if (realm instanceof Lifecycle) {
            try {
                ((Lifecycle) realm).start();
            } catch (LifecycleException e) {
                // If realm doesn't start can't authenticate against it
                iter.remove();
                log.error(sm.getString("combinedRealm.realmStartFail",
                        realm.getInfo()), e);
            }
        }
    }
    super.startInternal();
}
项目:tomcat7    文件:LifecycleBase.java   
@Override
public final synchronized void init() throws LifecycleException {

    /**
     * 检查当前状态是否为New,避免重复初始化,注意state为volatile
     */
    if (!state.equals(LifecycleState.NEW)) {
        invalidTransition(Lifecycle.BEFORE_INIT_EVENT);
    }

    try {
        setStateInternal(LifecycleState.INITIALIZING, null, false);
        initInternal();
        setStateInternal(LifecycleState.INITIALIZED, null, false);
    } catch (Throwable t) {
        ExceptionUtils.handleThrowable(t);
        setStateInternal(LifecycleState.FAILED, null, false);
        throw new LifecycleException(
                sm.getString("lifecycleBase.initFail",toString()), t);
    }
}
项目:apache-tomcat-7.0.73-with-comment    文件:JasperListener.java   
/**
 * Primary entry point for startup and shutdown events.
 *
 * @param event The event that has occurred
 */
@Override
public void lifecycleEvent(LifecycleEvent event) {

    if (Lifecycle.BEFORE_INIT_EVENT.equals(event.getType())) {
        try {
            // Set JSP factory
            Class.forName("org.apache.jasper.compiler.JspRuntimeContext",
                          true,
                          this.getClass().getClassLoader());
        } catch (Throwable t) {
            ExceptionUtils.handleThrowable(t);
            // Should not occur, obviously
            log.warn("Couldn't initialize Jasper", t);
        }
        // Another possibility is to do directly:
        // JspFactory.setDefaultFactory(new JspFactoryImpl());
    }

}
项目:lazycat    文件:UserConfig.java   
/**
 * Process the START event for an associated Host.
 *
 * @param event
 *            The lifecycle event that has occurred
 */
@Override
public void lifecycleEvent(LifecycleEvent event) {

    // Identify the host we are associated with
    try {
        host = (Host) event.getLifecycle();
    } catch (ClassCastException e) {
        log.error(sm.getString("hostConfig.cce", event.getLifecycle()), e);
        return;
    }

    // Process the event that has occurred
    if (event.getType().equals(Lifecycle.START_EVENT))
        start();
    else if (event.getType().equals(Lifecycle.STOP_EVENT))
        stop();

}
项目:apache-tomcat-7.0.73-with-comment    文件:CombinedRealm.java   
/**
 * Prepare for the beginning of active use of the public methods of this
 * component and implement the requirements of
 * {@link org.apache.catalina.util.LifecycleBase#startInternal()}.
 *
 * @exception LifecycleException if this component detects a fatal error
 *  that prevents this component from being used
 */
@Override
protected void startInternal() throws LifecycleException {
    // Start 'sub-realms' then this one
    Iterator<Realm> iter = realms.iterator();

    while (iter.hasNext()) {
        Realm realm = iter.next();
        if (realm instanceof Lifecycle) {
            try {
                ((Lifecycle) realm).start();
            } catch (LifecycleException e) {
                // If realm doesn't start can't authenticate against it
                iter.remove();
                log.error(sm.getString("combinedRealm.realmStartFail",
                        realm.getInfo()), e);
            }
        }
    }
    super.startInternal();
}
项目:jerrydog    文件:StandardPipeline.java   
/**
 * <p>Add a new Valve to the end of the pipeline associated with this
 * Container.  Prior to adding the Valve, the Valve's
 * <code>setContainer()</code> method will be called, if it implements
 * <code>Contained</code>, with the owning Container as an argument.
 * The method may throw an
 * <code>IllegalArgumentException</code> if this Valve chooses not to
 * be associated with this Container, or <code>IllegalStateException</code>
 * if it is already associated with a different Container.</p>
 *
 * @param valve Valve to be added
 *
 * @exception IllegalArgumentException if this Container refused to
 *  accept the specified Valve
 * @exception IllegalArgumentException if the specifie Valve refuses to be
 *  associated with this Container
 * @exception IllegalStateException if the specified Valve is already
 *  associated with a different Container
 */
public void addValve(Valve valve) {

    // Validate that we can add this Valve
    if (valve instanceof Contained)
        ((Contained) valve).setContainer(this.container);

    // Start the new component if necessary
    if (started && (valve instanceof Lifecycle)) {
        try {
            ((Lifecycle) valve).start();
        } catch (LifecycleException e) {
            log("StandardPipeline.addValve: start: ", e);
        }
    }

    // Add this Valve to the set associated with this Pipeline
    synchronized (valves) {
        Valve results[] = new Valve[valves.length +1];
        System.arraycopy(valves, 0, results, 0, valves.length);
        results[valves.length] = valve;
        valves = results;
    }

}
项目:jerrydog    文件:HttpConnector.java   
/**
 * Create and return a new processor suitable for processing HTTP
 * requests and returning the corresponding responses.
 */
private HttpProcessor newProcessor() {

    HttpProcessor processor = new HttpProcessor(this, curProcessors++);
    if (processor instanceof Lifecycle) {
        try {
            ((Lifecycle) processor).start();
        } catch (LifecycleException e) {
            log("newProcessor", e);
            return (null);
        }
    }
    created.addElement(processor);
    return (processor);

}
项目:lazycat    文件:StandardPipeline.java   
/**
 * Stop {@link Valve}s) in this pipeline and implement the requirements of
 * {@link LifecycleBase#stopInternal()}.
 *
 * @exception LifecycleException
 *                if this component detects a fatal error that prevents this
 *                component from being used
 */
@Override
protected synchronized void stopInternal() throws LifecycleException {

    setState(LifecycleState.STOPPING);

    // Stop the Valves in our pipeline (including the basic), if any
    Valve current = first;
    if (current == null) {
        current = basic;
    }
    while (current != null) {
        if (current instanceof Lifecycle)
            ((Lifecycle) current).stop();
        current = current.getNext();
    }
}
项目:lams    文件:Catalina.java   
/**
 * Stop an existing server instance.
 */
public void stop() {

    try {
        // Remove the ShutdownHook first so that server.stop() 
        // doesn't get invoked twice
        if (useShutdownHook) {
            Runtime.getRuntime().removeShutdownHook(shutdownHook);
        }
    } catch (Throwable t) {
        // This will fail on JDK 1.2. Ignoring, as Tomcat can run
        // fine without the shutdown hook.
    }

    // Shut down the server
    if (server instanceof Lifecycle) {
        try {
            ((Lifecycle) server).stop();
        } catch (LifecycleException e) {
            log.error("Catalina.stop", e);
        }
    }

}
项目:lams    文件:EngineConfig.java   
/**
 * Process the START event for an associated Engine.
 *
 * @param event The lifecycle event that has occurred
 */
public void lifecycleEvent(LifecycleEvent event) {

    // Identify the engine we are associated with
    try {
        engine = (Engine) event.getLifecycle();
    } catch (ClassCastException e) {
        log.error(sm.getString("engineConfig.cce", event.getLifecycle()), e);
        return;
    }

    // Process the event that has occurred
    if (event.getType().equals(Lifecycle.START_EVENT))
        start();
    else if (event.getType().equals(Lifecycle.STOP_EVENT))
        stop();

}
项目:apache-tomcat-7.0.73-with-comment    文件:Embedded.java   
/**
 * Start nested components ({@link Connector}s and {@link Engine}s) and
 * implement the requirements of
 * {@link org.apache.catalina.util.LifecycleBase#startInternal()}.
 *
 * @exception LifecycleException if this component detects a fatal error
 *  that prevents this component from being used
 */
@Override
protected void startInternal() throws LifecycleException {

    if( log.isInfoEnabled() )
        log.info("Starting tomcat server");

    // Validate the setup of our required system properties
    initDirs();

    // Initialize some naming specific properties
    initNaming();

    setState(LifecycleState.STARTING);

    // Start our defined Engines first
    for (int i = 0; i < engines.length; i++) {
        engines[i].start();
    }

    // Start our defined Connectors second
    for (int i = 0; i < connectors.length; i++) {
        ((Lifecycle) connectors[i]).start();
    }

}
项目:apache-tomcat-7.0.73-with-comment    文件:Tomcat.java   
@Override
public void lifecycleEvent(LifecycleEvent event) {
    try {
        Context context = (Context) event.getLifecycle();
        if (event.getType().equals(Lifecycle.CONFIGURE_START_EVENT)) {
            context.setConfigured(true);
        }
        // LoginConfig is required to process @ServletSecurity
        // annotations
        if (context.getLoginConfig() == null) {
            context.setLoginConfig(
                    new LoginConfig("NONE", null, null, null));
            context.getPipeline().addValve(new NonLoginAuthenticator());
        }
    } catch (ClassCastException e) {
        return;
    }
}
项目:lams    文件:JasperListener.java   
/**
 * Primary entry point for startup and shutdown events.
 *
 * @param event The event that has occurred
 */
public void lifecycleEvent(LifecycleEvent event) {

    if (Lifecycle.INIT_EVENT.equals(event.getType())) {
        try {
            // Set JSP factory
            Class.forName("org.apache.jasper.compiler.JspRuntimeContext",
                          true,
                          this.getClass().getClassLoader());
        } catch (Throwable t) {
            // Should not occur, obviously
            log.warn("Couldn't initialize Jasper", t);
        }
        // Another possibility is to do directly:
        // JspFactory.setDefaultFactory(new JspFactoryImpl());
    }

}
项目:jerrydog    文件:ContainerBase.java   
/**
 * Remove an existing child Container from association with this parent
 * Container.
 *
 * @param child Existing child Container to be removed
 */
public void removeChild(Container child) {

    synchronized(children) {
        if (children.get(child.getName()) == null)
            return;
        children.remove(child.getName());
    }
    if (started && (child instanceof Lifecycle)) {
        try {
            ((Lifecycle) child).stop();
        } catch (LifecycleException e) {
            log("ContainerBase.removeChild: stop: ", e);
        }
    }
    fireContainerEvent(REMOVE_CHILD_EVENT, child);
    child.setParent(null);

}
项目:lazycat    文件:EngineConfig.java   
/**
 * Process the START event for an associated Engine.
 *
 * @param event
 *            The lifecycle event that has occurred
 */
@Override
public void lifecycleEvent(LifecycleEvent event) {

    // Identify the engine we are associated with
    try {
        engine = (Engine) event.getLifecycle();
    } catch (ClassCastException e) {
        log.error(sm.getString("engineConfig.cce", event.getLifecycle()), e);
        return;
    }

    // Process the event that has occurred
    if (event.getType().equals(Lifecycle.START_EVENT))
        start();
    else if (event.getType().equals(Lifecycle.STOP_EVENT))
        stop();

}
项目:jerrydog    文件:Embedded.java   
/**
 * Add a new Engine to the set of defined Engines.
 *
 * @param engine The engine to be added
 */
public synchronized void addEngine(Engine engine) {

    if (debug >= 1)
        logger.log("Adding engine (" + engine.getInfo() + ")");

    // Add this Engine to our set of defined Engines
    Engine results[] = new Engine[engines.length + 1];
    for (int i = 0; i < engines.length; i++)
        results[i] = engines[i];
    results[engines.length] = engine;
    engines = results;

    // Start this Engine if necessary
    if (started && (engine instanceof Lifecycle)) {
        try {
            ((Lifecycle) engine).start();
        } catch (LifecycleException e) {
            logger.log("Engine.start", e);
        }
    }

}
项目:lazycat    文件:HostConfig.java   
@Override
public void lifecycleEvent(LifecycleEvent event) {
    if (Lifecycle.AFTER_STOP_EVENT.equals(event.getType())) {
        // The context has stopped.
        Context context = (Context) event.getLifecycle();

        // Remove the old expanded WAR.
        ExpandWar.delete(toDelete);

        // Reset the docBase to trigger re-expansion of the WAR.
        context.setDocBase(newDocBase);

        // Remove this listener from the Context else it will run every
        // time the Context is stopped.
        context.removeLifecycleListener(this);
    }
}
项目:jerrydog    文件:Catalina.java   
public void run() {

            if (server != null) {
                try {
                    ((Lifecycle) server).stop();
                } catch (LifecycleException e) {
                    System.out.println("Catalina.stop: " + e);
                    e.printStackTrace(System.out);
                    if (e.getThrowable() != null) {
                        System.out.println("----- Root Cause -----");
                        e.getThrowable().printStackTrace(System.out);
                    }
                }
            }

        }
项目:jerrydog    文件:CatalinaService.java   
/**
 * Stop an existing server instance.
 */
public void stop() {

    // Shut down the server
    if (server instanceof Lifecycle) {
        try {
            ((Lifecycle) server).stop();
        } catch (LifecycleException e) {
            System.out.println("Catalina.stop: " + e);
            e.printStackTrace(System.out);
            if (e.getThrowable() != null) {
                System.out.println("----- Root Cause -----");
                e.getThrowable().printStackTrace(System.out);
            }
        }
    }

}
项目:jerrydog    文件:UserConfig.java   
/**
 * Process the START event for an associated Host.
 *
 * @param event The lifecycle event that has occurred
 */
public void lifecycleEvent(LifecycleEvent event) {

    // Identify the host we are associated with
    try {
        host = (Host) event.getLifecycle();
    } catch (ClassCastException e) {
        log(sm.getString("hostConfig.cce", event.getLifecycle()), e);
        return;
    }

    // Process the event that has occurred
    if (event.getType().equals(Lifecycle.START_EVENT))
        start();
    else if (event.getType().equals(Lifecycle.STOP_EVENT))
        stop();

}
项目:jerrydog    文件:LifecycleListenerRule.java   
/**
 * Handle the beginning of an XML element.
 *
 * @param attributes The attributes of this element
 *
 * @exception Exception if a processing error occurs
 */
public void begin(Attributes attributes) throws Exception {

    // Instantiate a new LifecyleListener implementation object
    String className = listenerClass;
    if (attributeName != null) {
        String value = attributes.getValue(attributeName);
        if (value != null)
            className = value;
    }
    Class clazz = Class.forName(className);
    LifecycleListener listener =
        (LifecycleListener) clazz.newInstance();

    // Add this LifecycleListener to our associated component
    Lifecycle lifecycle = (Lifecycle) digester.peek();
    lifecycle.addLifecycleListener(listener);

}
项目:tomcat7    文件:SecurityListener.java   
@Override
public void lifecycleEvent(LifecycleEvent event) {
    // This is the earliest event in Lifecycle
    if (event.getType().equals(Lifecycle.BEFORE_INIT_EVENT)) {
        doChecks();
    }
}
项目:jerrydog    文件:StandardPipeline.java   
/**
 * Prepare for active use of the public methods of this Component.
 *
 * @exception LifecycleException if this component detects a fatal error
 *  that prevents it from being started
 */
public synchronized void start() throws LifecycleException {

    // Validate and update our current component state
    if (started)
        throw new LifecycleException
            (sm.getString("standardPipeline.alreadyStarted"));

    // Notify our interested LifecycleListeners
    lifecycle.fireLifecycleEvent(BEFORE_START_EVENT, null);

    started = true;

    // Start the Valves in our pipeline (including the basic), if any
    for (int i = 0; i < valves.length; i++) {
        if (valves[i] instanceof Lifecycle)
            ((Lifecycle) valves[i]).start();
    }
    if ((basic != null) && (basic instanceof Lifecycle))
        ((Lifecycle) basic).start();

    // Notify our interested LifecycleListeners
    lifecycle.fireLifecycleEvent(START_EVENT, null);

    // Notify our interested LifecycleListeners
    lifecycle.fireLifecycleEvent(AFTER_START_EVENT, null);

}
项目:tomcat7    文件:HostConfig.java   
/**
 * Process the START event for an associated Host.
 *
 * @param event The lifecycle event that has occurred
 */
@Override
public void lifecycleEvent(LifecycleEvent event) {

    // Identify the host we are associated with
    try {
        host = (Host) event.getLifecycle();
        if (host instanceof StandardHost) {
            setCopyXML(((StandardHost) host).isCopyXML());
            setDeployXML(((StandardHost) host).isDeployXML());
            setUnpackWARs(((StandardHost) host).isUnpackWARs());
            setContextClass(((StandardHost) host).getContextClass());
        }
    } catch (ClassCastException e) {
        log.error(sm.getString("hostConfig.cce", event.getLifecycle()), e);
        return;
    }

    // Process the event that has occurred
    if (event.getType().equals(Lifecycle.PERIODIC_EVENT)) {
        check();
    } else if (event.getType().equals(Lifecycle.BEFORE_START_EVENT)) {
        beforeStart();
    } else if (event.getType().equals(Lifecycle.START_EVENT)) {
        start();
    } else if (event.getType().equals(Lifecycle.STOP_EVENT)) {
        stop();
    }
}
项目:jerrydog    文件:StandardService.java   
/**
 * Prepare for the beginning of active use of the public methods of this
 * component.  This method should be called before any of the public
 * methods of this component are utilized.  It should also send a
 * LifecycleEvent of type START_EVENT to any registered listeners.
 *
 * @exception LifecycleException if this component detects a fatal error
 *  that prevents this component from being used
 */
public void start() throws LifecycleException {

    // Validate and update our current component state
    if (started) {
        throw new LifecycleException
            (sm.getString("standardService.start.started"));
    }

    // Notify our interested LifecycleListeners
    lifecycle.fireLifecycleEvent(BEFORE_START_EVENT, null);

    System.out.println
        (sm.getString("standardService.start.name", this.name));
    lifecycle.fireLifecycleEvent(START_EVENT, null);
    started = true;

    // Start our defined Container first
    if (container != null) {
        synchronized (container) {
            if (container instanceof Lifecycle) {
                ((Lifecycle) container).start();
            }
        }
    }

    // Start our defined Connectors second
    synchronized (connectors) {
        for (int i = 0; i < connectors.length; i++) {
            if (connectors[i] instanceof Lifecycle)
                ((Lifecycle) connectors[i]).start();
        }
    }

    // Notify our interested LifecycleListeners
    lifecycle.fireLifecycleEvent(AFTER_START_EVENT, null);

}
项目:jerrydog    文件:StandardPipeline.java   
/**
 * Gracefully shut down active use of the public methods of this Component.
 *
 * @exception LifecycleException if this component detects a fatal error
 *  that needs to be reported
 */
public synchronized void stop() throws LifecycleException {

    // Validate and update our current component state
    if (!started)
        throw new LifecycleException
            (sm.getString("standardPipeline.notStarted"));

    // Notify our interested LifecycleListeners
    lifecycle.fireLifecycleEvent(BEFORE_STOP_EVENT, null);

    // Notify our interested LifecycleListeners
    lifecycle.fireLifecycleEvent(STOP_EVENT, null);
    started = false;

    // Stop the Valves in our pipeline (including the basic), if any
    if ((basic != null) && (basic instanceof Lifecycle))
        ((Lifecycle) basic).stop();
    for (int i = 0; i < valves.length; i++) {
        if (valves[i] instanceof Lifecycle)
            ((Lifecycle) valves[i]).stop();
    }

    // Notify our interested LifecycleListeners
    lifecycle.fireLifecycleEvent(AFTER_STOP_EVENT, null);

}
项目:tomcat7    文件:PersistentManagerBase.java   
/**
 * Stop this component and implement the requirements
 * of {@link org.apache.catalina.util.LifecycleBase#stopInternal()}.
 *
 * @exception LifecycleException if this component detects a fatal error
 *  that prevents this component from being used
 */
@Override
protected synchronized void stopInternal() throws LifecycleException {

    if (log.isDebugEnabled())
        log.debug("Stopping");

    setState(LifecycleState.STOPPING);

    if (getStore() != null && saveOnRestart) {
        unload();
    } else {
        // Expire all active sessions
        Session sessions[] = findSessions();
        for (int i = 0; i < sessions.length; i++) {
            StandardSession session = (StandardSession) sessions[i];
            if (!session.isValid())
                continue;
            session.expire();
        }
    }

    if (getStore() != null && getStore() instanceof Lifecycle)
        ((Lifecycle)getStore()).stop();

    // Require a new random number generator if we are restarted
    super.stopInternal();
}
项目:tomcat7    文件:GlobalResourcesLifecycleListener.java   
/**
 * Primary entry point for startup and shutdown events.
 *
 * @param event The event that has occurred
 */
@Override
public void lifecycleEvent(LifecycleEvent event) {

    if (Lifecycle.START_EVENT.equals(event.getType())) {
        component = event.getLifecycle();
        createMBeans();
    } else if (Lifecycle.STOP_EVENT.equals(event.getType())) {
        destroyMBeans();
        component = null;
    }

}
项目:tomcat7    文件:CombinedRealm.java   
/**
 * Gracefully terminate the active use of the public methods of this
 * component and implement the requirements of
 * {@link org.apache.catalina.util.LifecycleBase#stopInternal()}.
 *
 * @exception LifecycleException if this component detects a fatal error
 *  that needs to be reported
 */
 @Override
protected void stopInternal() throws LifecycleException {
    // Stop this realm, then the sub-realms (reverse order to start)
    super.stopInternal();
    for (Realm realm : realms) {
        if (realm instanceof Lifecycle) {
            ((Lifecycle) realm).stop();
        }
    }        
}
项目:jerrydog    文件:ContainerBase.java   
/**
 * Add the specified Mapper associated with this Container.
 *
 * @param mapper The corresponding Mapper implementation
 *
 * @exception IllegalArgumentException if this exception is thrown by
 *  the <code>setContainer()</code> method of the Mapper
 */
public void addMapper(Mapper mapper) {

    synchronized(mappers) {
        if (mappers.get(mapper.getProtocol()) != null)
            throw new IllegalArgumentException("addMapper:  Protocol '" +
                                               mapper.getProtocol() +
                                               "' is not unique");
        mapper.setContainer((Container) this);      // May throw IAE
        if (started && (mapper instanceof Lifecycle)) {
            try {
                ((Lifecycle) mapper).start();
            } catch (LifecycleException e) {
                log("ContainerBase.addMapper: start: ", e);
                throw new IllegalStateException
                    ("ContainerBase.addMapper: start: " + e);
            }
        }
        mappers.put(mapper.getProtocol(), mapper);
        if (mappers.size() == 1)
            this.mapper = mapper;
        else
            this.mapper = null;
        fireContainerEvent(ADD_MAPPER_EVENT, mapper);
    }

}
项目:lazycat    文件:PersistentManagerBase.java   
/**
 * Start this component and implement the requirements of
 * {@link org.apache.catalina.util.LifecycleBase#startInternal()}.
 *
 * @exception LifecycleException
 *                if this component detects a fatal error that prevents this
 *                component from being used
 */
@Override
protected synchronized void startInternal() throws LifecycleException {

    super.startInternal();

    if (store == null)
        log.error("No Store configured, persistence disabled");
    else if (store instanceof Lifecycle)
        ((Lifecycle) store).start();

    setState(LifecycleState.STARTING);
}
项目:tomcat7    文件:StandardEngine.java   
@Override
public void lifecycleEvent(LifecycleEvent event) {
    if (disabled) return;

    String type = event.getType();
    if (Lifecycle.AFTER_START_EVENT.equals(type) ||
            Lifecycle.BEFORE_STOP_EVENT.equals(type) ||
            Lifecycle.BEFORE_DESTROY_EVENT.equals(type)) {
        // Container is being started/stopped/removed
        // Force re-calculation and disable listener since it won't
        // be re-used
        engine.defaultAccessLog.set(null);
        uninstall();
    }
}
项目:apache-tomcat-7.0.73-with-comment    文件:StandardContext.java   
/**
 * Deallocate resources and destroy proxy.
 */
public boolean resourcesStop() {

    boolean ok = true;

    try {
        if (resources != null) {
            if (resources instanceof Lifecycle) {
                ((Lifecycle) resources).stop();
            }
            if (webappResources instanceof BaseDirContext) {
                ((BaseDirContext) webappResources).release();
            }
            // Unregister the cache in JMX
            if (isCachingAllowed()) {
                String contextName = getName();
                if (!contextName.startsWith("/")) {
                    contextName = "/" + contextName;
                }
                ObjectName resourcesName = 
                    new ObjectName(this.getDomain()
                                   + ":type=Cache,host=" 
                                   + getHostname() + ",context=" 
                                   + contextName);
                Registry.getRegistry(null, null)
                    .unregisterComponent(resourcesName);
            }
        }
    } catch (Throwable t) {
        ExceptionUtils.handleThrowable(t);
        log.error(sm.getString("standardContext.resourcesStop"), t);
        ok = false;
    }

    this.resources = null;

    return (ok);

}
项目:lazycat    文件:ContainerBase.java   
@Override
protected void destroyInternal() throws LifecycleException {

    if ((manager != null) && (manager instanceof Lifecycle)) {
        ((Lifecycle) manager).destroy();
    }
    Realm realm = getRealmInternal();
    if ((realm != null) && (realm instanceof Lifecycle)) {
        ((Lifecycle) realm).destroy();
    }
    if ((cluster != null) && (cluster instanceof Lifecycle)) {
        ((Lifecycle) cluster).destroy();
    }
    if ((loader != null) && (loader instanceof Lifecycle)) {
        ((Lifecycle) loader).destroy();
    }

    // Stop the Valves in our pipeline (including the basic), if any
    if (pipeline instanceof Lifecycle) {
        ((Lifecycle) pipeline).destroy();
    }

    // Remove children now this container is being destroyed
    for (Container child : findChildren()) {
        removeChild(child);
    }

    // Required if the child is destroyed directly.
    if (parent != null) {
        parent.removeChild(this);
    }

    // If init fails, this may be null
    if (startStopExecutor != null) {
        startStopExecutor.shutdownNow();
    }

    super.destroyInternal();
}