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