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 2015/11/21 16:51:12 UTC

svn commit: r1715539 - /tomcat/trunk/java/javax/security/auth/message/config/AuthConfigFactory.java

Author: markt
Date: Sat Nov 21 15:51:12 2015
New Revision: 1715539

URL: http://svn.apache.org/viewvc?rev=1715539&view=rev
Log:
Avoid the memory leak

Modified:
    tomcat/trunk/java/javax/security/auth/message/config/AuthConfigFactory.java

Modified: tomcat/trunk/java/javax/security/auth/message/config/AuthConfigFactory.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/javax/security/auth/message/config/AuthConfigFactory.java?rev=1715539&r1=1715538&r2=1715539&view=diff
==============================================================================
--- tomcat/trunk/java/javax/security/auth/message/config/AuthConfigFactory.java (original)
+++ tomcat/trunk/java/javax/security/auth/message/config/AuthConfigFactory.java Sat Nov 21 15:51:12 2015
@@ -49,17 +49,6 @@ public abstract class AuthConfigFactory
             "org.apache.catalina.authenticator.jaspic.AuthConfigFactoryImpl";
 
     private static AuthConfigFactory factory;
-    private static ClassLoader contextClassLoader;
-
-    static {
-        // TODO: This looks like a memory leak waiting to happen
-        contextClassLoader = AccessController.doPrivileged(new PrivilegedAction<ClassLoader>() {
-            @Override
-            public ClassLoader run() {
-                return Thread.currentThread().getContextClassLoader();
-            }
-        });
-    }
 
     public AuthConfigFactory() {
     }
@@ -77,8 +66,11 @@ public abstract class AuthConfigFactory
                 @Override
                 public AuthConfigFactory run() throws ClassNotFoundException,
                         InstantiationException, IllegalAccessException {
-                    // TODO Review this
-                    Class<?> clazz = Class.forName(className, true, contextClassLoader);
+                    // Load this class with the same class loader as used for
+                    // this class. Note that the Thread context class loader
+                    // should not be used since that would trigger a memory leak
+                    // in container environments.
+                    Class<?> clazz = Class.forName(className);
                     return (AuthConfigFactory) clazz.newInstance();
                 }
             });



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