Author: markt
Date: Tue Aug 24 21:08:34 2010
New Revision: 988729

URL: http://svn.apache.org/viewvc?rev=988729&view=rev
Log:
Fix memory leak on context stop

Modified:
    tomcat/trunk/java/org/apache/catalina/startup/ContextConfig.java
    tomcat/trunk/java/org/apache/catalina/startup/LocalStrings.properties
    tomcat/trunk/webapps/docs/changelog.xml

Modified: tomcat/trunk/java/org/apache/catalina/startup/ContextConfig.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/startup/ContextConfig.java?rev=988729&r1=988728&r2=988729&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/startup/ContextConfig.java (original)
+++ tomcat/trunk/java/org/apache/catalina/startup/ContextConfig.java Tue Aug 24 
21:08:34 2010
@@ -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

Modified: tomcat/trunk/java/org/apache/catalina/startup/LocalStrings.properties
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/startup/LocalStrings.properties?rev=988729&r1=988728&r2=988729&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/startup/LocalStrings.properties 
(original)
+++ tomcat/trunk/java/org/apache/catalina/startup/LocalStrings.properties Tue 
Aug 24 21:08:34 2010
@@ -35,6 +35,7 @@ contextConfig.defaultError=Error process
 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

Modified: tomcat/trunk/webapps/docs/changelog.xml
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=988729&r1=988728&r2=988729&view=diff
==============================================================================
--- tomcat/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/trunk/webapps/docs/changelog.xml Tue Aug 24 21:08:34 2010
@@ -84,6 +84,11 @@
         CSRF prevention filter did not correctly handle URLs that used anchors.
         (markt)
       </fix>
+      <fix>
+        Fix memory leak on web application stopped caused by failed to
+        de-register the web application's Servlets with the MBean server.
+        (markt)
+      </fix>
     </changelog>
   </subsection>
   <subsection name="Coyote">



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to