JCS (Java Caching System) - библиотека, позволяющая реализовать эффективное кеширование данных в приложении (в том числе и Веб). Возможности - создание кеша в ОП, на диске, кеша с доступом по сетевым протоколам (UDP, RMI)
- организация распределенного кеша
Преимущества - простота использования
- гибкость (перекофигурирование черех конфигурационный файл)
- высокая скорость работы
Страничка проекта http://jakarta.apache.org/jcs/ Пример класса для работы с JCS /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package demojcssimple;
import java.util.logging.Level; import java.util.logging.Logger; import org.apache.jcs.JCS; import org.apache.jcs.access.exception.CacheException;
/** * * @author dev */ public class DemoJCSClass {
private JCS cache;
public DemoJCSClass() { try { cache = JCS.getInstance("testRegion"); } catch (CacheException ex) { Logger.getLogger(DemoJCSClass.class.getName()).log(Level.SEVERE, null, ex); } }
public void addElement(String key, String value) { try { cache.put(key, value); } catch (CacheException ex) { Logger.getLogger(DemoJCSClass.class.getName()).log(Level.SEVERE, null, ex); } }
public String getElement(String key) { return (String) cache.get(key); } }
Пример вызова
/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package demojcssimple;
import java.util.logging.Level; import java.util.logging.Logger; import org.apache.jcs.JCS; import org.apache.jcs.access.exception.CacheException;
/** * * @author dev */ public class DemoJCSClass {
private JCS cache;
public DemoJCSClass() { try { cache = JCS.getInstance("testRegion"); } catch (CacheException ex) { Logger.getLogger(DemoJCSClass.class.getName()).log(Level.SEVERE, null, ex); } }
public void addElement(String key, String value) { try { cache.put(key, value); } catch (CacheException ex) { Logger.getLogger(DemoJCSClass.class.getName()).log(Level.SEVERE, null, ex); } }
public String getElement(String key) { return (String) cache.get(key); } }
Пример файла cache.ccf # DEFAULT CACHE REGION jcs.default=DC jcs.default.cacheattributes=org.apache.jcs.engine.CompositeCacheAttributes jcs.default.cacheattributes.MaxObjects=1000 jcs.default.cacheattributes.MemoryCacheName=org.apache.jcs.engine.memory.lru.LRUMemoryCache jcs.default.cacheattributes.UseMemoryShrinker=false jcs.default.cacheattributes.MaxMemoryIdleTimeSeconds=3600 jcs.default.cacheattributes.ShrinkerIntervalSeconds=60 jcs.default.elementattributes=org.apache.jcs.engine.ElementAttributes jcs.default.elementattributes.IsEternal=false jcs.default.elementattributes.MaxLifeSeconds=21600 jcs.default.elementattributes.IdleTime=1800 jcs.default.elementattributes.IsSpool=true jcs.default.elementattributes.IsRemote=true jcs.default.elementattributes.IsLateral=true
# PRE-DEFINED CACHE REGIONS jcs.region.testRegion=DC jcs.region.testRegion.cacheattributes=org.apache.jcs.engine.CompositeCacheAttributes jcs.region.testRegion.cacheattributes.MaxObjects=1000 jcs.region.testRegion.cacheattributes.MemoryCacheName=org.apache.jcs.engine.memory.lru.LRUMemoryCache jcs.region.testRegion.cacheattributes.UseMemoryShrinker=false jcs.region.testRegion.cacheattributes.MaxMemoryIdleTimeSeconds=3600 jcs.region.testRegion.cacheattributes.ShrinkerIntervalSeconds=60 jcs.region.testRegion.cacheattributes.MaxSpoolPerRun=500 jcs.region.testRegion.elementattributes=org.apache.jcs.engine.ElementAttributes jcs.region.testRegion.elementattributes.IsEternal=false
# AVAILABLE AUXILIARY CACHES jcs.auxiliary.DC=org.apache.jcs.auxiliary.disk.indexed.IndexedDiskCacheFactory jcs.auxiliary.DC.attributes=org.apache.jcs.auxiliary.disk.indexed.IndexedDiskCacheAttributes jcs.auxiliary.DC.attributes.DiskPath=c:/temp jcs.auxiliary.DC.attributes.MaxPurgatorySize=10000000 jcs.auxiliary.DC.attributes.MaxKeySize=1000000 jcs.auxiliary.DC.attributes.MaxRecycleBinSize=5000 jcs.auxiliary.DC.attributes.OptimizeAtRemoveCount=300000 jcs.auxiliary.DC.attributes.ShutdownSpoolTimeLimit=60
Возможные проблемы 1. Failed to load properties for name [/cache.ccf] Решение Файл cache.ccf должен непосредственно располагаться в папке src 2. Exception in thread "main" java.lang.NoClassDefFoundError: EDU/oswego/cs/dl/util/concurrent/Channel Решение скачать http://www.java2s.com/Code/JarDownload/concurrent-1.3.4.jar.zip (ровно как и другие библиотеки необходимые для работы (см. http://jakarta.apache.org/jcs/dependencies.html)) Полезные ссылки Полный список зависимостей http://jakarta.apache.org/jcs/dependencies.html Полный исходный текст http://dsa.ucoz.ru/demo_sources/demoJCSSimple.zip
|