EhCache索引查看器

发布于 2024-12-22 08:56:29 字数 160 浏览 4 评论 0原文

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

For Lucene, we have a good toolbox like Luke to view, diagnose, edit etc. Do we have similar tool (at least display) for EhCache (when we enable diskPersistent)?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

半衬遮猫 2024-12-29 08:56:29

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

  }

I don't know of any such tool, and the file format isn't really specified or defined as API. Basically, EhCache writes serialized objects to the data and index files. You can read and display them if you access the files directly. To get you going, here is a program as a starting point:

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

  }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文