2011-12-21 12 views
7

लुसीन के लिए दर्शक, हमारे पास Luke जैसे एक अच्छा टूलबॉक्स है, देखने, निदान करने, संपादित करने आदि के लिए एक अच्छा टूलबॉक्स है। क्या हमारे पास EhCache के लिए समान टूल (कम से कम प्रदर्शन) है (जब हम डिस्कपर्सिस्टेंट सक्षम करते हैं)?एएचकेचे इंडेक्स

उत्तर

0

मुझे इस तरह के किसी भी उपकरण के बारे में पता नहीं है, और फ़ाइल प्रारूप वास्तव में निर्दिष्ट नहीं है या एपीआई के रूप में परिभाषित नहीं है। असल में, एह कैश डेटा और इंडेक्स फ़ाइलों को क्रमबद्ध वस्तुओं को लिखता है। यदि आप फ़ाइलों को सीधे एक्सेस करते हैं तो आप उन्हें पढ़ और प्रदर्शित कर सकते हैं। आपको जाने के लिए, यहां एक प्रारंभिक बिंदु के रूप में एक कार्यक्रम है:

import java.io.ByteArrayInputStream; 
    import java.io.EOFException; 
    import java.io.FileInputStream; 
    import java.io.ObjectInputStream; 
    import java.io.RandomAccessFile; 
    import java.lang.reflect.Field; 

    import net.sf.ehcache.Element; 
    import net.sf.ehcache.store.disk.DiskStorageFactory.DiskMarker; 

    public class EhcacheViewer 
    { 

    public static void main(String[] args) throws Exception 
    { 
     final RandomAccessFile data = new RandomAccessFile("cache/my-cache.data", "r"); 
     ObjectInputStream ois = new ObjectInputStream(new FileInputStream("cache/my-cache.index")); 
     try 
     { 
      while(true) 
      { 
       Object key = ois.readObject(); 
       DiskMarker marker = (DiskMarker) ois.readObject(); 
       long pos = getPosition(marker); 
       int size = marker.getSize(); 
       data.seek(pos); 
       byte[] value = new byte[size]; 
       data.readFully(value); 
       ObjectInputStream ois2 = new ObjectInputStream(new ByteArrayInputStream(value)); 
       Element element = (Element) ois2.readObject(); 
       System.out.println("Element: " + element); 
      } 
     } 
     catch(EOFException e) 
     { 
      // ... 
     } 
     ois.close(); 
     data.close(); 
    } 

    private static long getPosition(DiskMarker marker) throws Exception 
    { 
     Field field = marker.getClass().getDeclaredField("position"); 
     field.setAccessible(true); 
     return (Long) field.get(marker); 
    } 

    } 
संबंधित मुद्दे