public class EhCacheManager extends Object implements CacheManager, Initializable, Destroyable
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.
Modifier and Type | Field and Description |
---|---|
protected net.sf.ehcache.CacheManager |
manager
The EhCache cache manager used by this implementation to create caches.
|
Constructor and Description |
---|
EhCacheManager()
Default no argument constructor
|
Modifier and Type | Method and Description |
---|---|
void |
destroy()
Shuts-down the wrapped Ehcache CacheManager only if implicitly created.
|
<K,V> Cache<K,V> |
getCache(String name)
Loads an existing EhCache from the cache manager, or starts a new cache if one is not found.
|
net.sf.ehcache.CacheManager |
getCacheManager()
Returns the wrapped Ehcache
CacheManager instance. |
String |
getCacheManagerConfigFile()
Returns the resource location of the config file used to initialize a new
EhCache CacheManager instance.
|
protected InputStream |
getCacheManagerConfigFileInputStream()
Acquires the InputStream for the ehcache configuration file using
ResourceUtils.getInputStreamForPath with the
path returned from getCacheManagerConfigFile() . |
void |
init()
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.
|
protected net.sf.ehcache.CacheManager manager
public EhCacheManager()
public net.sf.ehcache.CacheManager getCacheManager()
CacheManager
instance.CacheManager
instance.public void setCacheManager(net.sf.ehcache.CacheManager manager)
CacheManager
instance.manager
- the wrapped Ehcache CacheManager
instance.public String getCacheManagerConfigFile()
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.public void setCacheManagerConfigFile(String classpathLocation)
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.classpathLocation
- resource location of the config file used to create the wrapped
EhCache CacheManager instance.protected InputStream getCacheManagerConfigFileInputStream()
ResourceUtils.getInputStreamForPath
with the
path returned from getCacheManagerConfigFile()
.public final <K,V> Cache<K,V> getCache(String name) throws CacheException
getCache
in interface CacheManager
name
- the name of the cache to load/create.CacheException
- if there is an error acquiring the Cache instance.public final void init() throws CacheException
CacheManager
has been
explicitly set (e.g. via Dependency Injection or programatically) 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.init
in interface Initializable
CacheException
- if there are any CacheExceptions thrown by EhCache.CacheManager.create()
public void destroy()
init
, this instance expects that same
component to also destroy the CacheManager instance, and it will not attempt to do so.destroy
in interface Destroyable
Copyright © 2004-2016 The Apache Software Foundation. All Rights Reserved.