Author: hthomann
Date: Fri Apr  1 15:50:32 2016
New Revision: 1737411

URL: http://svn.apache.org/viewvc?rev=1737411&view=rev
Log:
OPENJPA-2636: Updated a Map in Configurations to avoid a ClassLoader leak.  
Ported 2.2.x changes to trunk.

Modified:
    
openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/Configurations.java

Modified: 
openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/Configurations.java
URL: 
http://svn.apache.org/viewvc/openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/Configurations.java?rev=1737411&r1=1737410&r2=1737411&view=diff
==============================================================================
--- 
openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/Configurations.java
 (original)
+++ 
openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/Configurations.java
 Fri Apr  1 15:50:32 2016
@@ -196,7 +196,9 @@ public class Configurations {
         Object key = loader == null ? NULL_LOADER : loader;
         Map<String,Class<?>> loaderCache = (Map<String,Class<?>>) 
_loaders.get(key);
         if (loaderCache == null) { // We don't have a cache for this loader.
-            loaderCache = new ConcurrentHashMap<String,Class<?>>();
+            //OPENJPA-2636: Changed to HARD/WEAK to avoid Classloader leak:
+            loaderCache = new 
ConcurrentReferenceHashMap(ConcurrentReferenceHashMap.HARD,
+                    ConcurrentReferenceHashMap.WEAK);            
             _loaders.put(key, loaderCache);
         } else {  // We have a cache for this loader.
             cls = (Class<?>) loaderCache.get(clsName);


Reply via email to