Mercurial > dive4elements > river
view flys-artifacts/src/main/java/de/intevation/flys/artifacts/cache/CacheFactory.java @ 423:bab867fb37e8
Charts are generated using the size defined in the incoming request document.
flys-artifacts/trunk@1908 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Thu, 12 May 2011 09:11:16 +0000 |
parents | e07d1c3f7667 |
children | 0c8aca463bd4 |
line wrap: on
line source
package de.intevation.flys.artifacts.cache; import de.intevation.artifacts.common.utils.Config; import net.sf.ehcache.Cache; import net.sf.ehcache.CacheException; import net.sf.ehcache.CacheManager; import org.apache.log4j.Logger; public final class CacheFactory { private static Logger log = Logger.getLogger(CacheFactory.class); public static final String XPATH_CACHE_CONFIG_FILE = "/artifact-database/cache/config-file/text()"; private CacheFactory() { } private static boolean initialized; private static CacheManager cacheManager; public static final Cache getCache() { return getCache(Cache.DEFAULT_CACHE_NAME); } public static final synchronized Cache getCache(String cacheName) { if (!initialized) { initialized = true; // try only once String configFile = Config.getStringXPath(XPATH_CACHE_CONFIG_FILE); if (configFile != null) { configFile = Config.replaceConfigDir(configFile); try { cacheManager = CacheManager.create(configFile); //System.setProperty( // "net.sf.ehcache.enableShutdownHook", "true"); Runtime.getRuntime().addShutdownHook(new Thread() { public void run() { log.info("shutting down caches"); for (String name: cacheManager.getCacheNames()) { log.info("\tflushing '" + name + "'"); cacheManager.getCache(name).flush(); } cacheManager.shutdown(); } }); } catch (CacheException ce) { log.error("cannot configure cache", ce); } } } return cacheManager != null ? cacheManager.getCache(cacheName) : null; } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :