2013-09-03 2 views
1

Я внедряю JCS в первый раз.Пример примера для JCS

Мое требование: У меня есть один класс java с основным методом, в котором я храню некоторые данные в кеше.

У меня есть второй класс java с основным методом, из которого я извлекаю из кеша диска, который я сохранил, используя первый класс java.

Обратите внимание: 1. Я хочу использовать дисковый кеш (JCS). 2. Я хочу получить данные из разных JVM. 3. Когда я запускаю первый метод Java-класса, я должен хранить данные в кеше диска, и когда я запускаю второй метод класса Java, я хочу извлечь данные из кэша, который хранится на диске, используя первый метод класса java.

класс 1: Основной метод ..

public static void main(String[] args) { 
// Initialize the JCS object and get an instance of the default cache region 
    try { 
     JCS cache = JCS.getInstance("default"); 

    String key = "key0"; 
    String value = "value0"; 

    cache.put(key, value); 
    cache.put("vasu","dev"); 


    } catch (CacheException e) { 
     e.printStackTrace(); 
    } 
} 

class2: Основной метод

public static void main (String asd[]){ 
    try { 
     JCS cache = JCS.getInstance("default"); 


    String cachedData = (String)cache.get("vasu"); 


// Check if the retrieval worked 
    if (cachedData != null) { 
     // The cachedData is valid and can be used 
     System.out.println("Valid cached Data: " + cachedData); 
    } 
    else 
     System.out.println("Invalid cached Data: "); 

    } catch (CacheException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    catch (Exception e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 

cache.ccf:

jcs.default=DISK_REGION 
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.elementattributes.IsEternal=false 
jcs.default.elementattributes.MaxLifeSeconds=3600 
jcs.default.elementattributes.IdleTime=1800 
jcs.default.elementattributes.IsSpool=true 
jcs.default.elementattributes.IsRemote=true 
jcs.default.elementattributes.IsLateral=true 

jcs.region.OUR_REGION=DISK_REGION 
jcs.region.OUR_REGION.cacheattributes=org.apache.jcs.engine.CompositeCacheAttributes 
jcs.region.OUR_REGION.cacheattributes.MaxObjects=1000 
jcs.region.OUR_REGION.cacheattributes.MemoryCacheName=org.apache.jcs.engine.memory.lru.LRUMemoryCache 
jcs.region.OUR_REGION.cacheattributes.UseMemoryShrinker=true 
jcs.region.OUR_REGION.cacheattributes.MaxMemoryIdleTimeSeconds=3600 
jcs.region.OUR_REGION.cacheattributes.ShrinkerIntervalSeconds=60 
jcs.region.OUR_REGION.cacheattributes.MaxSpoolPerRun=500 
jcs.region.OUR_REGION.elementattributes=org.apache.jcs.engine.ElementAttributes 
jcs.region.OUR_REGION.elementattributes.IsEternal=false 

jcs.auxiliary.DISK_REGION=org.apache.jcs.auxiliary.disk.indexed.IndexedDiskCacheFactory 
jcs.auxiliary.DISK_REGION.attributes=org.apache.jcs.auxiliary.disk.indexed.IndexedDiskCacheAttributes 
jcs.auxiliary.DISK_REGION.attributes.DiskPath=c:/jcs/disk_region 
jcs.auxiliary.DISK_REGION.attributes.MaxPurgatorySize=10000 
jcs.auxiliary.DISK_REGION.attributes.MaxKeySize=10000 
jcs.auxiliary.DISK_REGION.attributes.OptimizeAtRemoveCount=300000 
jcs.auxiliary.DISK_REGION.attributes.MaxRecycleBinSize=7500 
+0

Хорошо, можете ли вы опубликовать код, который вы написали, и где ваша проблема с ним? Также любые ошибки/предупреждения тоже. – RossC

+0

WOAH! Я не могу прочитать это вообще, можете ли вы опубликовать его в исходном вопросе с отступом? Слишком грязно здесь, чтобы копать. Хороший макет и полное описание проблем и результатов и ошибок помогут вам получить хорошие ответы. Abigmessofcodethatisallruntogetherisveryhardtoread !! – RossC

+0

Комментарии не имеют форматирования, как вопросы/ответы. – RossC

ответ

1

Я сделал два изменения и ожидаемый результат выше образец кода был достигнут.

консоль -> "Действительно кэшированные данные: устр"

Что я сделал

  1. Добавление дополнительной линии к cache.ccf под умолчанию область кэша -

    jcs.default.cacheattributes.DiskUsagePatternName=UPDATE 
    
  2. Добавление спать в конце класса 1: основной метод

Объяснение

  1. DiskUsagePattern по умолчанию для SWAP, что означает, что элементы кэша записываются на диск, когда MaxMemoryIdleTimeSeconds элемента достигший, по умолчанию, как представляется, 60 * 120 секунд. Когда DiskUsagePattern равно UPDATE, элементы записываются на диск, когда они добавляются в кэш. Ну, элементы не записываются в кеш синхронно, а добавляются в очередь, которая должна быть немедленно записана и возвращена. Итак, если кто-то ищет мгновенное и надежное обновление на диске, то DiskUsagePattern должно быть UPDATE не SWAP (по умолчанию).
  2. Элементы в указанной выше очереди немедленно обрабатываются фоновым потоком, который помечен как демон. В этом фоновом потоке происходит обновление реального диска. Поэтому нам нужно дать немного времени для выполнения этого потока демонов.
Смежные вопросы