Class EhCacheManager

java.lang.Object
org.apache.shiro.cache.ehcache.EhCacheManager
All Implemented Interfaces:
org.apache.shiro.cache.CacheManager, org.apache.shiro.lang.util.Destroyable, org.apache.shiro.lang.util.Initializable

public class EhCacheManager extends Object implements org.apache.shiro.cache.CacheManager, org.apache.shiro.lang.util.Initializable, org.apache.shiro.lang.util.Destroyable
Shiro CacheManager implementation utilizing the Ehcache framework for all cache functionality.

This class can accept a manually configured net.sf.ehcache.CacheManager instance, or an ehcache.xml path location can be specified instead and one will be constructed. If neither are specified, Shiro's failsafe ehcache.xml file will be used by default.

This implementation requires EhCache 1.2 and above. Make sure EhCache 1.1 or earlier is not in the classpath or it will not work.

Please see the Ehcache website for their documentation.

Since:
0.2
See Also:
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected net.sf.ehcache.CacheManager
    The EhCache cache manager used by this implementation to create caches.
  • Constructor Summary

    Constructors
    Constructor
    Description
    Default no argument constructor
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    Shuts-down the wrapped Ehcache CacheManager only if implicitly created.
    final <K, V> org.apache.shiro.cache.Cache<K,V>
    Loads an existing EhCache from the cache manager, or starts a new cache if one is not found.
    net.sf.ehcache.CacheManager
    Returns the wrapped Ehcache CacheManager instance.
    Returns the resource location of the config file used to initialize a new EhCache CacheManager instance.
    protected InputStream
    Acquires the InputStream for the ehcache configuration file using ResourceUtils.getInputStreamForPath with the path returned from getCacheManagerConfigFile().
    final void
    Initializes this instance.
    void
    setCacheManager(net.sf.ehcache.CacheManager manager)
    Sets the wrapped Ehcache CacheManager instance.
    void
    setCacheManagerConfigFile(String classpathLocation)
    Sets the resource location of the config file used to initialize the wrapped EhCache CacheManager instance.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • manager

      protected net.sf.ehcache.CacheManager manager
      The EhCache cache manager used by this implementation to create caches.
  • Constructor Details

    • EhCacheManager

      public EhCacheManager()
      Default no argument constructor
  • Method Details

    • getCacheManager

      public net.sf.ehcache.CacheManager getCacheManager()
      Returns the wrapped Ehcache CacheManager instance.
      Returns:
      the wrapped Ehcache CacheManager instance.
    • setCacheManager

      public void setCacheManager(net.sf.ehcache.CacheManager manager)
      Sets the wrapped Ehcache CacheManager instance.
      Parameters:
      manager - the wrapped Ehcache CacheManager instance.
    • getCacheManagerConfigFile

      public String getCacheManagerConfigFile()
      Returns the resource location of the config file used to initialize a new EhCache CacheManager instance. The string can be any resource path supported by the ResourceUtils.getInputStreamForPath(String) call.

      This property is ignored if the CacheManager instance is injected directly - that is, it is only used to lazily create a CacheManager if one is not already provided.

      Returns:
      the resource location of the config file used to initialize the wrapped EhCache CacheManager instance.
    • setCacheManagerConfigFile

      public void setCacheManagerConfigFile(String classpathLocation)
      Sets the resource location of the config file used to initialize the wrapped EhCache CacheManager instance. The string can be any resource path supported by the ResourceUtils.getInputStreamForPath(String) call.

      This property is ignored if the CacheManager instance is injected directly - that is, it is only used to lazily create a CacheManager if one is not already provided.

      Parameters:
      classpathLocation - resource location of the config file used to create the wrapped EhCache CacheManager instance.
    • getCacheManagerConfigFileInputStream

      protected InputStream getCacheManagerConfigFileInputStream()
      Acquires the InputStream for the ehcache configuration file using ResourceUtils.getInputStreamForPath with the path returned from getCacheManagerConfigFile().
      Returns:
      the InputStream for the ehcache configuration file.
    • getCache

      public final <K, V> org.apache.shiro.cache.Cache<K,V> getCache(String name) throws org.apache.shiro.cache.CacheException
      Loads an existing EhCache from the cache manager, or starts a new cache if one is not found.
      Specified by:
      getCache in interface org.apache.shiro.cache.CacheManager
      Parameters:
      name - the name of the cache to load/create.
      Throws:
      org.apache.shiro.cache.CacheException
    • init

      public final void init() throws org.apache.shiro.cache.CacheException
      Initializes this instance.

      If a CacheManager has been explicitly set (e.g. via Dependency Injection or programmatically) prior to calling this method, this method does nothing.

      However, if no CacheManager has been set, the default Ehcache singleton will be initialized, where Ehcache will look for an ehcache.xml file at the root of the classpath. If one is not found, Ehcache will use its own failsafe configuration file.

      Because Shiro cannot use the failsafe defaults (fail-safe expunges cached objects after 2 minutes, something not desirable for Shiro sessions), this class manages an internal default configuration for this case.

      Specified by:
      init in interface org.apache.shiro.lang.util.Initializable
      Throws:
      org.apache.shiro.cache.CacheException - if there are any CacheExceptions thrown by EhCache.
      See Also:
      • CacheManager.create()
    • destroy

      public void destroy()
      Shuts-down the wrapped Ehcache CacheManager only if implicitly created.

      If another component injected a non-null CacheManager into this instance before calling init, this instance expects that same component to also destroy the CacheManager instance, and it will not attempt to do so.

      Specified by:
      destroy in interface org.apache.shiro.lang.util.Destroyable