Class DefaultGlobalCacheService

  • All Implemented Interfaces:
    Runnable, org.apache.avalon.framework.activity.Disposable, org.apache.avalon.framework.activity.Initializable, org.apache.avalon.framework.configuration.Configurable, org.apache.avalon.framework.logger.LogEnabled, org.apache.avalon.framework.thread.ThreadSafe, GlobalCacheService

    public class DefaultGlobalCacheService
    extends org.apache.avalon.framework.logger.AbstractLogEnabled
    implements GlobalCacheService, Runnable, org.apache.avalon.framework.configuration.Configurable, org.apache.avalon.framework.activity.Initializable, org.apache.avalon.framework.activity.Disposable, org.apache.avalon.framework.thread.ThreadSafe
    This Service functions as a Global Cache. A global cache is a good place to store items that you may need to access often but don't necessarily need (or want) to fetch from the database everytime. A good example would be a look up table of States that you store in a database and use throughout your application. Since information about States doesn't change very often, you could store this information in the Global Cache and decrease the overhead of hitting the database everytime you need State information.
    Version:
    $Id$
    Author:
    Dave Bryson, Jon S. Stevens, John Thorhauer, Henning P. Schmiedehausen, Eric Pugh, Peter CourefreshableCachedObjectux
    • Method Detail

      • getCacheCheckFrequency

        public long getCacheCheckFrequency()
        Get the Cache Check Frequency in milliseconds
        Returns:
        the time between two cache check runs in milliseconds
      • getObject

        public <T> CachedObject<T> getObject​(String objectId)
                                      throws ObjectExpiredException
        Returns an item from the cache. /** Returns an item from the cache. RefreshableCachedObject will be refreshed if it is expired and not untouched.
        Specified by:
        getObject in interface GlobalCacheService
        Type Parameters:
        T - type of object to return
        Parameters:
        objectId - The key of the stored object.
        Returns:
        The object from the cache.
        Throws:
        ObjectExpiredException - when either the object is not in the cache or it has expired.
      • addObject

        public <T> void addObject​(String objectId,
                                  CachedObject<T> object)
        Adds an object to the cache.
        Specified by:
        addObject in interface GlobalCacheService
        Type Parameters:
        T - type of object to add
        Parameters:
        objectId - The key to store the object by.
        object - The object to cache.
      • getKeys

        public List<StringgetKeys()
        Returns a copy of keys to objects in the cache as a list. Note that keys to expired objects are not returned.
        Specified by:
        getKeys in interface GlobalCacheService
        Returns:
        A List of String's representing the keys to objects in the cache.
      • run

        public void run()
        Circle through the cache and remove stale objects. Frequency is determined by the cacheCheckFrequency property.
        Specified by:
        run in interface Runnable
      • clearCache

        public void clearCache()
        Iterate through the cache and remove or refresh stale objects.
      • configure

        public void configure​(org.apache.avalon.framework.configuration.Configuration conf)
                       throws org.apache.avalon.framework.configuration.ConfigurationException
        Avalon component lifecycle method
        Specified by:
        configure in interface org.apache.avalon.framework.configuration.Configurable
        Throws:
        org.apache.avalon.framework.configuration.ConfigurationException
      • initialize

        public void initialize()
                        throws Exception
        Avalon component lifecycle method
        Specified by:
        initialize in interface org.apache.avalon.framework.activity.Initializable
        Throws:
        Exception
      • dispose

        public void dispose()
        Avalon component lifecycle method
        Specified by:
        dispose in interface org.apache.avalon.framework.activity.Disposable