From 8d287f89291d0c4091129cecef44bc4c678eee68 Mon Sep 17 00:00:00 2001 From: markt Date: Thu, 25 Mar 2010 00:59:23 +0000 Subject: [PATCH] Make sure start() and stop() are called on Wrappers. This was a regression in the recent Lifecycle changes. git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@927247 13f79535-47bb-0310-9956-ffa450edef68 --- java/org/apache/catalina/Lifecycle.java | 13 +++++++++++-- java/org/apache/catalina/core/StandardContext.java | 8 +++++--- java/org/apache/catalina/startup/ContextConfig.java | 12 ++++++------ java/org/apache/catalina/startup/TldConfig.java | 2 +- java/org/apache/catalina/startup/Tomcat.java | 2 +- 5 files changed, 24 insertions(+), 13 deletions(-) diff --git a/java/org/apache/catalina/Lifecycle.java b/java/org/apache/catalina/Lifecycle.java index 7fac3c2d2..7c3fd509a 100644 --- a/java/org/apache/catalina/Lifecycle.java +++ b/java/org/apache/catalina/Lifecycle.java @@ -135,12 +135,21 @@ public interface Lifecycle { /** - * The LifecycleEvent type for the "configure" event. Use by those + * The LifecycleEvent type for the "configure_start" event. Used by those * components that use a separate component to perform configuration and * need to signal when configuration should be performed - usually after * {@link #BEFORE_START_EVENT} and before {@link #START_EVENT}. */ - public static final String CONFIGURE_EVENT = "configure"; + public static final String CONFIGURE_START_EVENT = "configure_start"; + + + /** + * The LifecycleEvent type for the "configure_stop" event. Used by those + * components that use a separate component to perform configuration and + * need to signal when de-configuration should be performed - usually after + * {@link #STOP_EVENT} and before {@link #AFTER_STOP_EVENT}. + */ + public static final String CONFIGURE_STOP_EVENT = "configure_stop"; // --------------------------------------------------------- Public Methods diff --git a/java/org/apache/catalina/core/StandardContext.java b/java/org/apache/catalina/core/StandardContext.java index 45b2c9039..03d9d6da4 100644 --- a/java/org/apache/catalina/core/StandardContext.java +++ b/java/org/apache/catalina/core/StandardContext.java @@ -4559,6 +4559,9 @@ public class StandardContext if ((resources != null) && (resources instanceof Lifecycle)) ((Lifecycle) resources).start(); + // Notify our interested LifecycleListeners + fireLifecycleEvent(Lifecycle.CONFIGURE_START_EVENT, null); + // Start our child containers, if any Container children[] = findChildren(); for (int i = 0; i < children.length; i++) { @@ -4571,9 +4574,6 @@ public class StandardContext ((Lifecycle) pipeline).start(); } - // Notify our interested LifecycleListeners - fireLifecycleEvent(Lifecycle.CONFIGURE_EVENT, null); - // Acquire clustered manager Manager contextManager = null; if (manager == null) { @@ -4824,6 +4824,8 @@ public class StandardContext if (log.isDebugEnabled()) log.debug("Processing standard container shutdown"); + fireLifecycleEvent(Lifecycle.CONFIGURE_STOP_EVENT, null); + // Stop the Valves in our pipeline (including the basic), if any if (pipeline instanceof Lifecycle) { ((Lifecycle) pipeline).stop(); diff --git a/java/org/apache/catalina/startup/ContextConfig.java b/java/org/apache/catalina/startup/ContextConfig.java index cae33a7cd..843e0ab19 100644 --- a/java/org/apache/catalina/startup/ContextConfig.java +++ b/java/org/apache/catalina/startup/ContextConfig.java @@ -284,8 +284,8 @@ public class ContextConfig } // Process the event that has occurred - if (event.getType().equals(Lifecycle.CONFIGURE_EVENT)) { - configure(); + if (event.getType().equals(Lifecycle.CONFIGURE_START_EVENT)) { + configureStart(); } else if (event.getType().equals(Lifecycle.BEFORE_START_EVENT)) { beforeStart(); } else if (event.getType().equals(Lifecycle.AFTER_START_EVENT)) { @@ -295,13 +295,13 @@ public class ContextConfig context.setDocBase(originalDocBase); originalDocBase = docBase; } - } else if (event.getType().equals(Lifecycle.STOP_EVENT)) { + } else if (event.getType().equals(Lifecycle.CONFIGURE_STOP_EVENT)) { if (originalDocBase != null) { String docBase = context.getDocBase(); context.setDocBase(originalDocBase); originalDocBase = docBase; } - stop(); + configureStop(); } else if (event.getType().equals(Lifecycle.INIT_EVENT)) { init(); } else if (event.getType().equals(Lifecycle.DESTROY_EVENT)) { @@ -823,7 +823,7 @@ public class ContextConfig /** * Process a "contextConfig" event for this Context. */ - protected synchronized void configure() { + protected synchronized void configureStart() { // Called from StandardContext.start() if (log.isDebugEnabled()) @@ -902,7 +902,7 @@ public class ContextConfig /** * Process a "stop" event for this Context. */ - protected synchronized void stop() { + protected synchronized void configureStop() { if (log.isDebugEnabled()) log.debug(sm.getString("contextConfig.stop")); diff --git a/java/org/apache/catalina/startup/TldConfig.java b/java/org/apache/catalina/startup/TldConfig.java index a5a4e9d37..6846e5b7d 100644 --- a/java/org/apache/catalina/startup/TldConfig.java +++ b/java/org/apache/catalina/startup/TldConfig.java @@ -569,7 +569,7 @@ public final class TldConfig implements LifecycleListener { if (event.getType().equals(Lifecycle.INIT_EVENT)) { init(); - } else if (event.getType().equals(Lifecycle.CONFIGURE_EVENT)) { + } else if (event.getType().equals(Lifecycle.CONFIGURE_START_EVENT)) { try { execute(); } catch (Exception e) { diff --git a/java/org/apache/catalina/startup/Tomcat.java b/java/org/apache/catalina/startup/Tomcat.java index b5e223c2e..5d9f12617 100644 --- a/java/org/apache/catalina/startup/Tomcat.java +++ b/java/org/apache/catalina/startup/Tomcat.java @@ -676,7 +676,7 @@ public class Tomcat { public void lifecycleEvent(LifecycleEvent event) { try { Context context = (Context) event.getLifecycle(); - if (event.getType().equals(Lifecycle.CONFIGURE_EVENT)) { + if (event.getType().equals(Lifecycle.CONFIGURE_START_EVENT)) { context.setConfigured(true); } } catch (ClassCastException e) { -- 2.11.0