İpucu

Apache JCS Kütüphanesinin Kurulumu ve Kullanımı

Apache'nin cache kütüphanesi Commons JCS (Java Cache System) web projelerinde veya uygulamarda, nesneleri cache'de saklamak için geliştirilmiş bir kütüphanedir. Bunu kullanmak için aşağıdaki jar'lar gerekmektedir :
  • concurrent
  • commons-logging
  • 1.2.6.9 ve öncesi versiyonlar ek olarak :
  • commons-collections
  • commons-lang
  • EDU.oswego.cs.dl.util.concurrent
  • EDU.oswego.cs.dl.util.concurrent.misc
Eğer maven kullanıyorsanız :
 <dependency>
    <groupId>org.apache.jcs</groupId>
    <artifactId>jcs</artifactId>
    <version>1.3</version>
</dependency> 
ile ekleyebilirsiniz
Konfigurasyon için aşağıdaki gibi bir dosyayı src klasörünüze (classpath'den bulunabilecek başka bir konuma da koyulabilir) koymanız gerekir:
# DEFAULT CACHE REGION
jcs.default=
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=true
jcs.default.cacheattributes.MaxMemoryIdleTimeSeconds=3600
jcs.default.cacheattributes.ShrinkerIntervalSeconds=60
jcs.default.cacheattributes.MaxSpoolPerRun=500
jcs.default.cacheattributes.useDisk=false
jcs.default.cacheattributes.useRemote=false

jcs.default.elementattributes.MaxLifeSeconds=3600
jcs.default.elementattributes=org.apache.jcs.engine.ElementAttributes
jcs.default.elementattributes.IsEternal=false

jcs.region.GENERAL_DATA=
jcs.region.GENERAL_DATA.cacheattributes=org.apache.jcs.engine.CompositeCacheAttributes
jcs.region.GENERAL_DATA.cacheattributes.MaxObjects=1000
jcs.region.GENERAL_DATA.cacheattributes.MemoryCacheName=org.apache.jcs.engine.memory.lru.LRUMemoryCache
jcs.region.GENERAL_DATA.cacheattributes.UseMemoryShrinker=true
jcs.region.GENERAL_DATA.cacheattributes.MaxMemoryIdleTimeSeconds=3600
jcs.region.GENERAL_DATA.cacheattributes.ShrinkerIntervalSeconds=60
jcs.region.GENERAL_DATA.cacheattributes.MaxSpoolPerRun=500
jcs.region.GENERAL_DATA.cacheattributes.useDisk=false
jcs.region.GENERAL_DATA.cacheattributes.useRemote=false
jcs.region.GENERAL_DATA.elementattributes.MaxLifeSeconds=43200
jcs.region.GENERAL_DATA.elementattributes=org.apache.jcs.engine.ElementAttributes
jcs.region.GENERAL_DATA.elementattributes.IsEternal=false

jcs.region.GENERAL_DATA_2=
jcs.region.GENERAL_DATA_2.cacheattributes=org.apache.jcs.engine.CompositeCacheAttributes
jcs.region.GENERAL_DATA_2.cacheattributes.MaxObjects=1000
jcs.region.GENERAL_DATA_2.cacheattributes.MemoryCacheName=org.apache.jcs.engine.memory.lru.LRUMemoryCache
jcs.region.GENERAL_DATA_2.cacheattributes.UseMemoryShrinker=true
jcs.region.GENERAL_DATA_2.cacheattributes.MaxMemoryIdleTimeSeconds=3600
jcs.region.GENERAL_DATA_2.cacheattributes.ShrinkerIntervalSeconds=60
jcs.region.GENERAL_DATA_2.cacheattributes.MaxSpoolPerRun=500
jcs.region.GENERAL_DATA_2.cacheattributes.useDisk=false
jcs.region.GENERAL_DATA_2.cacheattributes.useRemote=false
jcs.region.GENERAL_DATA_2.elementattributes.MaxLifeSeconds=3600
jcs.region.GENERAL_DATA_2.elementattributes=org.apache.jcs.engine.ElementAttributes
jcs.region.GENERAL_DATA_2.elementattributes.IsEternal=false
Yukarıda varsayılan cahce ayarı yanında GENERAL_DATA ve GENERAL_DATA_2 adında iki farklı cache bölgesi yarattık. GENERAL_DATA bölgesine eklenen nesneler 12 saat (MaxLifeSeconds=43200 şeklinde tanımlanmıştır), GENERAL_DATA_2 bölgesine eklenen nesneler ise 1 saat cache'de saklanacaklardır.
Cache'deki nesnelere aşağıdaki gibi nesne koyulabilir ve erişilebilir :
//Nesne koyulması
JCS.getInstance("GENERAL_DATA").put("test", "test verisi");
// Nesnenin okunması
String s=(String)JCS.getInstance("GENERAL_DATA").get("test");
Basit bir kullanım örneği aşağıdaki gibi olabilir :
public List getList(){
	List list=null;	
	try {
		list=(List)JCS.getInstance("GENERAL_DATA").get("test");
	} catch (CacheException e) {
		e.printStackTrace();
	}
	if(list!=null){
		return list;
	}	
	list=getFrom();// Liste veritabanından veya başka bir kaynakdan yüklenir...
	try {
		JCS.getInstance("GENERAL_DATA").put("test", list);
	} catch (CacheException e) {
		e.printStackTrace();
	}
	return list;
}

getList fonksiyonu önce cache'e bakmaktadır. Eğer cache'de liste varsa o liste gönderilmektedir. Eğer liste yoksa veritabanı veya başka bir yerden veriler yüklenmekte ve cache'e atılmaktadır. Aynı fonksiyon bir sonraki sefer çağrıldığında expire süresi geçilmediyse cache'den liste döndürülecektir
zafer.teker , 12.07.2021

Bu Sayfayı Paylaş:

Fibiler Üyelerinin Yorumları


Tüm üyeler içeriklere yorum ekleyerek katkıda bulunabilir : Yorum Gir

Misafir Yorumları




Bu Sayfayı Paylaş:

İletişim Bilgileri

Takip Et

Her Hakkı Saklıdır. Bu sitede yayınlanan tüm bilgi ve fikirlerin kullanımından fibiler.com sorumlu değildir. Bu sitede üretilmiş , derlenmiş içerikleri, fibiler.com'u kaynak göstermek koşuluyla kendi sitenizde kullanılabilirsiniz. Ancak telif hakkı olan içeriklerin hakları sahiplerine aittir