gpt4 book ai didi

ehcache - EhCache 索引查看器

转载 作者:行者123 更新时间:2023-12-04 12:59:33 26 4
gpt4 key购买 nike

对于 Lucene,我们有一个很好的工具箱,如 Luke查看、诊断、编辑等。我们是否有类似的工具(至少显示)用于 EhCache(当我们启用 diskPersistent 时)?

最佳答案

我不知道有任何这样的工具,而且文件格式并没有真正指定或定义为 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 );
}

}

关于ehcache - EhCache 索引查看器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8584511/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com