KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > net > sf > cache4j > perfomance > cache > ehcache


1 /* =========================================================================
2  * File: ehcache.java$
3  *
4  * Copyright 2006 by Yuriy Stepovoy.
5  * email: stepovoy@gmail.com
6  * All rights reserved.
7  *
8  * =========================================================================
9  */

10
11 package net.sf.cache4j.perfomance.cache;
12
13 import net.sf.ehcache.Cache;
14 import net.sf.ehcache.CacheManager;
15 import net.sf.ehcache.Element;
16
17 import java.io.Serializable JavaDoc;
18 import java.util.Properties JavaDoc;
19
20 import net.sf.cache4j.perfomance.ICache;
21 import org.apache.log4j.PropertyConfigurator;
22
23 /**
24  * ehcache
25  *
26  * @version $Revision: 1.0 $ $Date: 04/03/2003 11:00:00 $
27  * @author Yuriy Stepovoy. <a HREF="mailto:stepovoy@gmail.com">stepovoy@gmail.com</a>
28  **/

29
30 public class ehcache implements ICache {
31 // ----------------------------------------------------------------------------- Константы
32
// ----------------------------------------------------------------------------- Атрибуты класса
33
private Cache _cache;
34 // ----------------------------------------------------------------------------- Статические переменные
35

36     public static final String JavaDoc NAME = "ehcache 1.1";
37
38 // ----------------------------------------------------------------------------- Конструкторы
39
// ----------------------------------------------------------------------------- Public методы
40

41     /**
42      * Инициализирует кеш
43      * @throws Exception
44      */

45     public void init() throws Exception JavaDoc {
46         Properties JavaDoc prop = new Properties JavaDoc();
47         prop.put("log4j.logger.net.sf.ehcache", "fatal, ehcache");
48         prop.put("log4j.appender.ehcache", "org.apache.log4j.ConsoleAppender");
49         prop.put("log4j.appender.ehcache.layout", "org.apache.log4j.PatternLayout");
50         prop.put("log4j.appender.ehcache.layout.ConversionPattern", "%d %-5p%m%n");
51         PropertyConfigurator.configure(prop);
52
53         //name, maximumSize, overflowToDisk, eternal, timeToLiveSeconds, timeToIdleSeconds
54
_cache = new Cache("test", 1000, false, true, 0, 0);
55         CacheManager.getInstance().addCache(_cache);
56     }
57
58     /**
59      * Возвращает объект из кеша
60      * @param id идентификатор объекта
61      * @return
62      * @throws Exception
63      */

64     public Object JavaDoc get(Object JavaDoc id) throws Exception JavaDoc {
65         Element elm = _cache.get((Serializable JavaDoc)id);
66         return elm==null ? null : elm.getValue();
67     }
68
69     /**
70      * Помещает объект в кеш
71      * @param id идентификатор объекта
72      * @param value объект
73      * @throws Exception
74      */

75     public void put(Object JavaDoc id, Object JavaDoc value) throws Exception JavaDoc {
76         _cache.put(new Element((Serializable JavaDoc)id, (Serializable JavaDoc)value));
77     }
78
79     /**
80      * Удаляет обюъект из кеша
81      * @param id идентификатор объекта
82      * @throws Exception
83      */

84     public void remove(Object JavaDoc id) throws Exception JavaDoc {
85         _cache.remove((Serializable JavaDoc)id);
86     }
87
88     /**
89      * Возвращает количество объектов в кеше
90      * @return
91      * @throws Exception
92      */

93     public long size() throws Exception JavaDoc {
94         return _cache.getSize();
95     }
96
97     /**
98      * Деинициализирует кеш
99      */

100     public void destroy() {
101         try {
102             CacheManager.getInstance().removeCache("test");
103             _cache = null;
104         } catch (Exception JavaDoc e){
105             e.printStackTrace();
106         }
107     }
108
109     /**
110      * Возвращает название кеша
111      * @return
112      */

113     public String JavaDoc getCacheName() {
114         return NAME;
115     }
116
117 // ----------------------------------------------------------------------------- Package scope методы
118
// ----------------------------------------------------------------------------- Protected методы
119
// ----------------------------------------------------------------------------- Private методы
120
// ----------------------------------------------------------------------------- Inner классы
121
}
Popular Tags