org.apache.commons.discovery.tools
Class EnvironmentCache
java.lang.Object
|
+--org.apache.commons.discovery.tools.EnvironmentCache
- public class EnvironmentCache
- extends java.lang.Object
Cache 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 : Object
When 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 |
static int |
smallHashSize
Initial hash size for SPI's, default just seem TO big today.. |
Method Summary |
static java.lang.Object |
get(java.lang.ClassLoader classLoader)
Get object keyed by classLoader. |
static void |
put(java.lang.ClassLoader classLoader,
java.lang.Object object)
Put service keyed by spi & classLoader. |
static void |
release()
Release all internal references to previously created service
instances associated with the current thread context class loader. |
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. |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
smallHashSize
public static final int smallHashSize
- Initial hash size for SPI's, default just seem TO big today..
EnvironmentCache
public EnvironmentCache()
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.
The
release()
method is called for service instances that
implement the Service
interface.
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 implements
Service
, then call
release()
.
Copyright (c) 2002 - Apache Software Foundation