Mercurial > dive4elements > river
changeset 373:7f7d6037d242
Added ehcache support.
flys-artifacts/trunk@1782 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Fri, 29 Apr 2011 16:56:37 +0000 |
parents | fc3cf0ef777e |
children | 91fbaa2744bf |
files | flys-artifacts/ChangeLog flys-artifacts/doc/conf/cache.xml flys-artifacts/doc/conf/conf.xml flys-artifacts/pom.xml flys-artifacts/src/main/java/de/intevation/flys/artifacts/cache/CacheFactory.java |
diffstat | 5 files changed, 107 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/flys-artifacts/ChangeLog Fri Apr 29 15:10:44 2011 +0000 +++ b/flys-artifacts/ChangeLog Fri Apr 29 16:56:37 2011 +0000 @@ -1,3 +1,14 @@ +2011-04-29 Sascha L. Teichmann <sascha.teichmann@intevation.de> + + * pom.xml: Added dependency to Ehcache. Apache 2.0 license. + + * doc/conf/conf.xml: Added configuration of ehcache. + + * doc/conf/cache.xml: New. Cache configurations. + + * src/main/java/de/intevation/flys/artifacts/cache/CacheFactory.java: + New. Factory to access caches. + 2011-04-29 Sascha L. Teichmann <sascha.teichmann@intevation.de> * src/main/java/de/intevation/flys/artifacts/services/MetaDataService.java:
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/flys-artifacts/doc/conf/cache.xml Fri Apr 29 16:56:37 2011 +0000 @@ -0,0 +1,30 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ehcache> + + <diskStore path="java.io.tmpdir"/> + + <defaultCache + maxElementsInMemory="1000" + eternal="false" + timeToIdleSeconds="120" + timeToLiveSeconds="3600" + overflowToDisk="true" + maxElementsOnDisk="100000" + diskPersistent="false" + diskExpiryThreadIntervalSeconds="120" + memoryStoreEvictionPolicy="LRU" + /> + + <!-- This one is used for the WST value tables --> + + <cache name="wst-cache" + maxElementsInMemory="20" + maxElementsOnDisk="100" + eternal="false" + timeToIdleSeconds="360" + overflowToDisk="true" + timeToLiveSeconds="14400" + diskPersistent="true" + memoryStoreEvictionPolicy="LRU" + /> +</ehcache>
--- a/flys-artifacts/doc/conf/conf.xml Fri Apr 29 15:10:44 2011 +0000 +++ b/flys-artifacts/doc/conf/conf.xml Fri Apr 29 16:56:37 2011 +0000 @@ -62,6 +62,11 @@ <cleaner> <sleep-time>60000</sleep-time> </cleaner> + + <cache> + <config-file>${artifacts.config.dir}/cache.xml</config-file> + </cache> + <database> <!-- This Section configures the Settings for connecting to the Artifact-Database instance. e.g. SQLite -->
--- a/flys-artifacts/pom.xml Fri Apr 29 15:10:44 2011 +0000 +++ b/flys-artifacts/pom.xml Fri Apr 29 16:56:37 2011 +0000 @@ -30,6 +30,11 @@ <dependencies> <dependency> + <groupId>net.sf.ehcache</groupId> + <artifactId>ehcache-core</artifactId> + <version>2.4.2</version> + </dependency> + <dependency> <groupId>jfree</groupId> <artifactId>jfreechart</artifactId> <version>1.0.13</version>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/cache/CacheFactory.java Fri Apr 29 16:56:37 2011 +0000 @@ -0,0 +1,56 @@ +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() { + 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 :