加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 通过JMX的Ehcache数据视图

发布时间:2020-12-15 02:35:23 所属栏目:Java 来源:网络整理
导读:有没有办法如何通过JMX查看存储在ehcache中的数据/对象?我发现只是缓存统计信息,但我需要查看对象结构. 解决方法 如果这是您需要的东西,您可以构建它,但它在Ehcache JMX实现中不可用.我不希望它是因为不知道存储在ehcache中的对象是否可以通过JMX显示.如果
有没有办法如何通过JMX查看存储在ehcache中的数据/对象?我发现只是缓存统计信息,但我需要查看对象结构.

解决方法

如果这是您需要的东西,您可以构建它,但它在Ehcache JMX实现中不可用.我不希望它是因为不知道存储在ehcache中的对象是否可以通过JMX显示.如果您知道它们是,那么您当然可以创建一个MBean,在给出对ehcache CacheManager或Cache的引用时,可以公开缓存的内容.

请记住,除非您使用仅内存缓存,否则缓存中的对象将不在内存中但在磁盘上,或者如果您使用的是陶土,则它们可能位于远程服务器上.此外,以序列化形式存储java对象有时更有效.如果您这样做,查看数据将需要反序列化.

如果您只是在调试问题时只想看到这些对象,我会考虑依赖于良好IDE中可用的调试器. NetBeans和Eclipse都具有能够用于查看缓存内容的调试器.我经常这样做.

由于你用“spring”标记了这个问题,我假设你使用的是spring.在春天创建一个MBean非常容易.您只需将导出器bean添加到上下文中,并使您的MBean实现一个与您的对象名称相同的接口,但将MBean添加到结尾.这是一个例子:

applicationContext.xml中:

<bean id="exporter" class="org.springframework.jmx.export.MBeanExporter" 
      p:autodetect="true"/>
<bean name="FOO:name=foo" class="com.foo.test.Foo"/>

Foo.java:

package com.foo.test;

public class Foo implements FooMBean {
  private String name;

  ...

  @Override
  public String getName() {
    return name;
  }

  @Override
  public void setName(String name) {
    this.name = name;
  }

  @Override
  public void printName() {
    System.out.println(name);
  }
}

FooMBean.java:

package com.foo.test;

public interface FooMBean {
  public String getName();
  public void setName(String name);
  public void printName();
}

在此示例中,“foo”对象将作为JMX MBean公开,该MBean将具有名为“name”的属性和名为“printName”的操作. MBean的名称将是:“FOO:name = foo”.您可以自定义所有这些行为.见:http://docs.spring.io/spring/docs/4.0.0.RELEASE/spring-framework-reference/htmlsingle/#jmx-exporting

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读