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-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org