< prev index next >

src/java.naming/share/classes/com/sun/jndi/ldap/LdapPoolManager.java

Print this page
rev 15155 : 8156824: com.sun.jndi.ldap.pool.PoolCleaner should clear its context class loader
Reviewed-by:

@@ -37,10 +37,11 @@
 import java.security.AccessController;
 import java.security.PrivilegedAction;
 
 import com.sun.jndi.ldap.pool.PoolCleaner;
 import com.sun.jndi.ldap.pool.Pool;
+import jdk.internal.misc.InnocuousThread;
 
 /**
  * Contains utilities for managing connection pools of LdapClient.
  * Contains method for
  * - checking whether attempted connection creation may be pooled

@@ -161,11 +162,21 @@
             }
         }
 
         if (idleTimeout > 0) {
             // Create cleaner to expire idle connections
-            new PoolCleaner(idleTimeout, pools).start();
+            PrivilegedAction<Void> pa = new PrivilegedAction<Void>() {
+                public Void run() {
+                    Thread t = InnocuousThread.newSystemThread(
+                            "LDAP PoolCleaner",
+                            new PoolCleaner(idleTimeout, pools));
+                    assert t.getContextClassLoader() == null;
+                    t.setDaemon(true);
+                    t.start();
+                    return null;
+                }};
+            AccessController.doPrivileged(pa);
         }
 
         if (debug) {
             showStats(System.err);
         }
< prev index next >