Class 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

      Fields 
      Modifier and Type Field Description
      static int smallHashSize
      Initial hash size for SPI's, default just seem TO big today..
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      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
    • 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
    • Constructor Detail

      • EnvironmentCache

        public EnvironmentCache()
    • 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. 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().