7
Lucene의 경우 Luke과 같은 도구 상자를보고, 진단하고 편집하는 등의 작업을 수행 할 수 있습니다. EhCache (diskPersistent를 활성화 한 경우)와 비슷한 툴 (최소한 디스플레이)이 있습니까?EhCache 용 뷰어
Lucene의 경우 Luke과 같은 도구 상자를보고, 진단하고 편집하는 등의 작업을 수행 할 수 있습니다. EhCache (diskPersistent를 활성화 한 경우)와 비슷한 툴 (최소한 디스플레이)이 있습니까?EhCache 용 뷰어
나는 그러한 도구를 모르며 파일 형식은 실제로 지정되지 않았거나 API로 정의되어 있습니다. 기본적으로 EhCache는 직렬화 된 개체를 데이터 및 색인 파일에 씁니다. 파일에 직접 액세스하면 해당 파일을 읽고 표시 할 수 있습니다. 시작을위한 프로그램이 여기에 있습니다.
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);
}
}