You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2014/09/01 12:06:08 UTC

svn commit: r1621725 - /tomcat/trunk/java/org/apache/catalina/core/DefaultInstanceManager.java

Author: markt
Date: Mon Sep  1 10:06:07 2014
New Revision: 1621725

URL: http://svn.apache.org/r1621725
Log:
Partial fix for https://issues.apache.org/bugzilla/show_bug.cgi?id=56900
Fix resource leaks reading property files
Based on a patch by Felix Schumacher

Modified:
    tomcat/trunk/java/org/apache/catalina/core/DefaultInstanceManager.java

Modified: tomcat/trunk/java/org/apache/catalina/core/DefaultInstanceManager.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/DefaultInstanceManager.java?rev=1621725&r1=1621724&r2=1621725&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/core/DefaultInstanceManager.java (original)
+++ tomcat/trunk/java/org/apache/catalina/core/DefaultInstanceManager.java Mon Sep  1 10:06:07 2014
@@ -49,6 +49,7 @@ import org.apache.catalina.ContainerServ
 import org.apache.catalina.Globals;
 import org.apache.catalina.security.SecurityUtil;
 import org.apache.catalina.util.Introspection;
+import org.apache.juli.logging.Log;
 import org.apache.tomcat.InstanceManager;
 import org.apache.tomcat.util.ExceptionUtils;
 import org.apache.tomcat.util.res.StringManager;
@@ -71,9 +72,9 @@ public class DefaultInstanceManager impl
     protected final ClassLoader containerClassLoader;
     protected final boolean privileged;
     protected final boolean ignoreAnnotations;
-    private final Properties restrictedFilters = new Properties();
-    private final Properties restrictedListeners = new Properties();
-    private final Properties restrictedServlets = new Properties();
+    private final Properties restrictedFilters;
+    private final Properties restrictedListeners;
+    private final Properties restrictedServlets;
     private final Map<Class<?>, AnnotationCacheEntry[]> annotationCache =
         new WeakHashMap<>();
     private final Map<String, String> postConstructMethods;
@@ -88,49 +89,18 @@ public class DefaultInstanceManager impl
         this.containerClassLoader = containerClassLoader;
         ignoreAnnotations = catalinaContext.getIgnoreAnnotations();
         StringManager sm = StringManager.getManager(Constants.Package);
-        try {
-            InputStream is =
-                this.getClass().getClassLoader().getResourceAsStream
-                    ("org/apache/catalina/core/RestrictedServlets.properties");
-            if (is != null) {
-                restrictedServlets.load(is);
-            } else {
-                catalinaContext.getLogger().error(sm.getString(
-                        "defaultInstanceManager.restrictedServletsResource"));
-            }
-        } catch (IOException e) {
-            catalinaContext.getLogger().error(sm.getString(
-                    "defaultInstanceManager.restrictedServletsResource"), e);
-        }
-
-        try {
-            InputStream is =
-                    this.getClass().getClassLoader().getResourceAsStream
-                            ("org/apache/catalina/core/RestrictedListeners.properties");
-            if (is != null) {
-                restrictedListeners.load(is);
-            } else {
-                catalinaContext.getLogger().error(sm.getString(
-                        "defaultInstanceManager.restrictedListenersResources"));
-            }
-        } catch (IOException e) {
-            catalinaContext.getLogger().error(sm.getString(
-                    "defaultInstanceManager.restrictedListenersResources"), e);
-        }
-        try {
-            InputStream is =
-                    this.getClass().getClassLoader().getResourceAsStream
-                            ("org/apache/catalina/core/RestrictedFilters.properties");
-            if (is != null) {
-                restrictedFilters.load(is);
-            } else {
-                catalinaContext.getLogger().error(sm.getString(
-                        "defaultInstanceManager.restrictedFiltersResource"));
-            }
-        } catch (IOException e) {
-            catalinaContext.getLogger().error(sm.getString(
-                    "defaultInstanceManager.restrictedServletsResources"), e);
-        }
+        restrictedServlets = loadProperties(
+                "org/apache/catalina/core/RestrictedServlets.properties",
+                sm.getString("defaultInstanceManager.restrictedServletsResource"),
+                catalinaContext.getLogger());
+        restrictedListeners = loadProperties(
+                "org/apache/catalina/core/RestrictedListeners.properties",
+                "defaultInstanceManager.restrictedListenersResources",
+                catalinaContext.getLogger());
+        restrictedFilters = loadProperties(
+                "org/apache/catalina/core/RestrictedFilters.properties",
+                "defaultInstanceManager.restrictedFiltersResource",
+                catalinaContext.getLogger());
         this.context = context;
         this.injectionMap = injectionMap;
         this.postConstructMethods = catalinaContext.findPostConstructMethods();
@@ -654,6 +624,21 @@ public class DefaultInstanceManager impl
         }
     }
 
+    private static Properties loadProperties(String resourceName, String errorString, Log log) {
+        Properties result = new Properties();
+        ClassLoader cl = DefaultInstanceManager.class.getClassLoader();
+        try (InputStream is = cl.getResourceAsStream(resourceName)) {
+            if (is ==null) {
+                log.error(errorString);
+            } else {
+                result.load(is);
+            }
+        } catch (IOException ioe) {
+            log.error(errorString, ioe);
+        }
+        return result;
+    }
+
     private static String normalize(String jndiName){
         if(jndiName != null && jndiName.startsWith("java:comp/env/")){
             return jndiName.substring(14);



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