Class EnvironmentCache
- java.lang.Object
-
- org.apache.commons.discovery.tools.EnvironmentCache
-
public class EnvironmentCache extends java.lang.ObjectCache by a 'key' unique to the environment: - ClassLoader::groupContext::Object Cache Cache : HashMap Key : Thread Context Class Loader (ClassLoader) Value : groupContext::SPI Cache (HashMap) //- groupContext::Object Cache // Cache : HashMap // Key : groupContext (String) // Value :ObjectWhen we 'release', it is expected that the caller of the 'release' have the same thread context class loader... as that will be used to identify cached entries to be released.- Author:
- Richard A. Sitze
-
-
Field Summary
Fields Modifier and Type Field Description static intsmallHashSizeInitial hash size for SPI's, default just seem TO big today..
-
Constructor Summary
Constructors Constructor Description EnvironmentCache()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static java.lang.Objectget(java.lang.ClassLoader classLoader)Get object keyed by classLoader.static voidput(java.lang.ClassLoader classLoader, java.lang.Object object)Put service keyed by spi & classLoader.static voidrelease()Release all internal references to previously created service instances associated with the current thread context class loader.static voidrelease(java.lang.ClassLoader classLoader)Release any internal references to a previously created service instance associated with the current thread context class loader.
-
-
-
Field Detail
-
smallHashSize
public static final int smallHashSize
Initial hash size for SPI's, default just seem TO big today..- See Also:
- Constant Field Values
-
-
Method Detail
-
get
public static java.lang.Object get(java.lang.ClassLoader classLoader)
Get object keyed by classLoader.
-
put
public static void put(java.lang.ClassLoader classLoader, java.lang.Object object)Put service keyed by spi & classLoader.
-
release
public static void release()
Release all internal references to previously created service instances associated with the current thread context class loader. Therelease()method is called for service instances that implement theServiceinterface. This is useful in environments like servlet containers, which implement application reloading by throwing away a ClassLoader. Dangling references to objects in that class loader would prevent garbage collection.
-
release
public static void release(java.lang.ClassLoader classLoader)
Release any internal references to a previously created service instance associated with the current thread context class loader. If the SPI instance implementsService, then callrelease().
-
-