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: [email protected]
For additional commands, e-mail: [email protected]