From: markt Date: Tue, 24 Aug 2010 21:08:34 +0000 (+0000) Subject: Fix memory leak on context stop X-Git-Url: https://git.internetallee.de/?a=commitdiff_plain;h=0908a78a5c4be32b13814c09738aed982107f41e;p=tomcat7.0 Fix memory leak on context stop git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@988729 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/java/org/apache/catalina/startup/ContextConfig.java b/java/org/apache/catalina/startup/ContextConfig.java index c142da9c8..613fde526 100644 --- a/java/org/apache/catalina/startup/ContextConfig.java +++ b/java/org/apache/catalina/startup/ContextConfig.java @@ -58,6 +58,7 @@ import org.apache.catalina.Globals; import org.apache.catalina.Host; import org.apache.catalina.Lifecycle; import org.apache.catalina.LifecycleEvent; +import org.apache.catalina.LifecycleException; import org.apache.catalina.LifecycleListener; import org.apache.catalina.Pipeline; import org.apache.catalina.Valve; @@ -299,6 +300,7 @@ public class ContextConfig * * @param event The lifecycle event that has occurred */ + @Override public void lifecycleEvent(LifecycleEvent event) { // Identify the context we are associated with @@ -929,6 +931,12 @@ public class ContextConfig Container[] children = context.findChildren(); for (i = 0; i < children.length; i++) { context.removeChild(children[i]); + try { + children[i].destroy(); + } catch (LifecycleException e) { + log.warn(sm.getString("contentConfig.destroyChildFailed", + children[1].getName(), context.getName()), e); + } } // Removing application parameters diff --git a/java/org/apache/catalina/startup/LocalStrings.properties b/java/org/apache/catalina/startup/LocalStrings.properties index b236ca8be..58e50c3a1 100644 --- a/java/org/apache/catalina/startup/LocalStrings.properties +++ b/java/org/apache/catalina/startup/LocalStrings.properties @@ -35,6 +35,7 @@ contextConfig.defaultError=Error processed default web.xml named {0} at {1} contextConfig.defaultMissing=No global web.xml found contextConfig.defaultPosition=Occurred at line {0} column {1} contextConfig.destroy=ContextConfig: Destroying +contentConfig.destroyChildFailed=Failed to destroy child [{0}] of context [{1}] contextConfig.fileUrl=Unable to create a File object from the URL [{0}] contextConfig.fixDocBase=Exception fixing docBase for context [{0}] contextConfig.init=ContextConfig: Initializing diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml index a855ddf8f..0f99d5e07 100644 --- a/webapps/docs/changelog.xml +++ b/webapps/docs/changelog.xml @@ -84,6 +84,11 @@ CSRF prevention filter did not correctly handle URLs that used anchors. (markt) + + Fix memory leak on web application stopped caused by failed to + de-register the web application's Servlets with the MBean server. + (markt) +