Mercurial > dive4elements > river
view flys-artifacts/src/main/java/de/intevation/flys/artifacts/cache/CacheFactory.java @ 2785:f87fcedbfa82
FixA: Fixed stupid index bug.
flys-artifacts/trunk@4524 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Sat, 26 May 2012 19:20:59 +0000 |
parents | 0c8aca463bd4 |
children |
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 CACHE_CONFIG_FILE_PROPERTY = "flys.artifacts.cache.config.file"; 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 String getConfigFile() { String configFile = System.getProperty(CACHE_CONFIG_FILE_PROPERTY); if (configFile != null) { return configFile; } configFile = Config.getStringXPath(XPATH_CACHE_CONFIG_FILE); if (configFile != null) { configFile = Config.replaceConfigDir(configFile); } return configFile; } public static final synchronized Cache getCache(String cacheName) { if (!initialized) { initialized = true; // try only once String configFile = getConfigFile(); if (configFile != null) { 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 :