Java 通过JMX查看Ehcache数据
有没有办法通过JMX查看存储在ehcache中的数据/对象?我只找到了缓存统计信息,但我需要查看对象结构。如果这是您需要的,您可以构建它,但它在Ehcache JMX实现中不可用。我也不希望这样,因为不知道存储在ehcache中的对象是否可以通过JMX显示。如果您知道它们是,那么您当然可以创建一个MBean,在给定对ehcache CacheManager或Cache的引用的情况下,该MBean可以公开缓存的内容 请记住,除非您使用的是纯内存缓存,否则缓存中的对象可能不在内存中,而是在磁盘上,或者,如果您使用的是terracotta,则它们可能在远程服务器上。此外,有时以序列化形式存储java对象更有效。如果这样做,查看数据将需要反序列化 <>如果你只想在调试一个问题时看到这些对象,我会考虑只依赖于一个调试器,就像在IDE中可用的调试器一样。NetBeans和Eclipse都有功能强大的调试器,可用于查看缓存的内容。我经常这样做 既然您将这个问题标记为“spring”,我假设您正在使用spring。在春季创建MBean非常简单。您只需将导出器bean添加到上下文中,并使您的MBean实现一个名为与您的对象相同但最后添加了MBean的接口。下面是一个例子: applicationContext.xml:Java 通过JMX查看Ehcache数据,java,spring,jmx,ehcache,Java,Spring,Jmx,Ehcache,有没有办法通过JMX查看存储在ehcache中的数据/对象?我只找到了缓存统计信息,但我需要查看对象结构。如果这是您需要的,您可以构建它,但它在Ehcache JMX实现中不可用。我也不希望这样,因为不知道存储在ehcache中的对象是否可以通过JMX显示。如果您知道它们是,那么您当然可以创建一个MBean,在给定对ehcache CacheManager或Cache的引用的情况下,该MBean可以公开缓存的内容 请记住,除非您使用的是纯内存缓存,否则缓存中的对象可能不在内存中,而是在磁盘上,或
<bean id="exporter" class="org.springframework.jmx.export.MBeanExporter"
p:autodetect="true"/>
<bean name="FOO:name=foo" class="com.foo.test.Foo"/>
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”。您可以自定义所有这些行为。见:
package com.foo.test;
public interface FooMBean {
public String getName();
public void setName(String name);
public void printName();
}