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);
}
}