More memory leak prevention - ResourceBundle
authormarkt <markt@13f79535-47bb-0310-9956-ffa450edef68>
Thu, 11 Feb 2010 15:14:55 +0000 (15:14 +0000)
committermarkt <markt@13f79535-47bb-0310-9956-ffa450edef68>
Thu, 11 Feb 2010 15:14:55 +0000 (15:14 +0000)
git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@909017 13f79535-47bb-0310-9956-ffa450edef68

java/org/apache/catalina/loader/WebappClassLoader.java
java/org/apache/jasper/servlet/JspServletWrapper.java

index e9adf34..d74cded 100644 (file)
@@ -47,6 +47,7 @@ import java.util.Iterator;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.ResourceBundle;
 import java.util.Vector;
 import java.util.concurrent.ThreadPoolExecutor;
 import java.util.jar.Attributes;
@@ -1773,6 +1774,9 @@ public class WebappClassLoader
             org.apache.juli.logging.LogFactory.release(this);
         }
         
+        // Clear any cached resource bundles
+        ResourceBundle.clearCache(this);
+
         // Clear the classloader reference in the VM's bean introspector
         java.beans.Introspector.flushCaches();
 
index be7d227..e153ccc 100644 (file)
@@ -20,6 +20,7 @@ package org.apache.jasper.servlet;
 import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.net.URL;
+import java.util.ResourceBundle;
 
 import javax.servlet.Servlet;
 import javax.servlet.ServletConfig;
@@ -416,6 +417,9 @@ public class JspServletWrapper {
 
     public void destroy() {
         if (theServlet != null) {
+            // Memory leak prevention - ResourceBundle caches resources based
+            // on class loader
+            ResourceBundle.clearCache(ctxt.getJspLoader());
             theServlet.destroy();
             InstanceManager instanceManager = InstanceManagerFactory.getInstanceManager(config);
             try {