annotate flys-artifacts/src/main/java/de/intevation/flys/artifacts/cache/CacheFactory.java @ 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
children e07d1c3f7667
rev   line source
373
7f7d6037d242 Added ehcache support.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1 package de.intevation.flys.artifacts.cache;
7f7d6037d242 Added ehcache support.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
2
7f7d6037d242 Added ehcache support.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
3 import de.intevation.artifacts.common.utils.Config;
7f7d6037d242 Added ehcache support.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
4
7f7d6037d242 Added ehcache support.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
5 import net.sf.ehcache.Cache;
7f7d6037d242 Added ehcache support.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
6 import net.sf.ehcache.CacheException;
7f7d6037d242 Added ehcache support.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
7 import net.sf.ehcache.CacheManager;
7f7d6037d242 Added ehcache support.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
8
7f7d6037d242 Added ehcache support.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
9 import org.apache.log4j.Logger;
7f7d6037d242 Added ehcache support.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
10
7f7d6037d242 Added ehcache support.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
11 public final class CacheFactory
7f7d6037d242 Added ehcache support.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
12 {
7f7d6037d242 Added ehcache support.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
13 private static Logger log = Logger.getLogger(CacheFactory.class);
7f7d6037d242 Added ehcache support.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
14
7f7d6037d242 Added ehcache support.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
15 public static final String XPATH_CACHE_CONFIG_FILE =
7f7d6037d242 Added ehcache support.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
16 "/artifact-database/cache/config-file/text()";
7f7d6037d242 Added ehcache support.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
17
7f7d6037d242 Added ehcache support.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
18 private CacheFactory() {
7f7d6037d242 Added ehcache support.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
19 }
7f7d6037d242 Added ehcache support.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
20
7f7d6037d242 Added ehcache support.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
21 private static boolean initialized;
7f7d6037d242 Added ehcache support.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
22
7f7d6037d242 Added ehcache support.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
23 private static CacheManager cacheManager;
7f7d6037d242 Added ehcache support.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
24
7f7d6037d242 Added ehcache support.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
25 public static final Cache getCache() {
7f7d6037d242 Added ehcache support.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
26 return getCache(Cache.DEFAULT_CACHE_NAME);
7f7d6037d242 Added ehcache support.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
27 }
7f7d6037d242 Added ehcache support.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
28
7f7d6037d242 Added ehcache support.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
29 public static final synchronized Cache getCache(String cacheName) {
7f7d6037d242 Added ehcache support.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
30 if (!initialized) {
7f7d6037d242 Added ehcache support.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
31 initialized = true; // try only once
7f7d6037d242 Added ehcache support.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
32 String configFile = Config.getStringXPath(XPATH_CACHE_CONFIG_FILE);
7f7d6037d242 Added ehcache support.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
33 if (configFile != null) {
7f7d6037d242 Added ehcache support.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
34 configFile = Config.replaceConfigDir(configFile);
7f7d6037d242 Added ehcache support.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
35 try {
7f7d6037d242 Added ehcache support.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
36 cacheManager = CacheManager.create(configFile);
7f7d6037d242 Added ehcache support.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
37 //System.setProperty(
7f7d6037d242 Added ehcache support.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
38 // "net.sf.ehcache.enableShutdownHook", "true");
7f7d6037d242 Added ehcache support.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
39 Runtime.getRuntime().addShutdownHook(new Thread() {
7f7d6037d242 Added ehcache support.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
40 public void run() {
7f7d6037d242 Added ehcache support.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
41 cacheManager.shutdown();
7f7d6037d242 Added ehcache support.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
42 }
7f7d6037d242 Added ehcache support.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
43 });
7f7d6037d242 Added ehcache support.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
44 }
7f7d6037d242 Added ehcache support.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
45 catch (CacheException ce) {
7f7d6037d242 Added ehcache support.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
46 log.error("cannot configure cache", ce);
7f7d6037d242 Added ehcache support.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
47 }
7f7d6037d242 Added ehcache support.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
48 }
7f7d6037d242 Added ehcache support.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
49 }
7f7d6037d242 Added ehcache support.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
50
7f7d6037d242 Added ehcache support.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
51 return cacheManager != null
7f7d6037d242 Added ehcache support.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
52 ? cacheManager.getCache(cacheName)
7f7d6037d242 Added ehcache support.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
53 : null;
7f7d6037d242 Added ehcache support.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
54 }
7f7d6037d242 Added ehcache support.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
55 }
7f7d6037d242 Added ehcache support.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
56 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org