我有一个在 Spring 3.2 下运行并公开 MBeanServer 的 webapp。尽管如此,这个 webapp 可以通过不同的 VM 运行,因此在不同的 VM 上有多个 JVM 实例。
我想修改每个 MBeanServer 实例上的 MBean,我知道有一个级联/联合JMX 的概念,但是我没有找到任何使用 Spring 来实现它的东西。
那么有一种方法可以轻松地联合 spring MBeanServer 吗?主要目标是修改每个“前端”上的 MBean。
JDMK (现在作为OpenJDMK提供)实现了 MBean Cascading。基本上,这意味着一系列单独的 MBeanServer(在不同的 JVM 中,但不是唯一的)在一个中央 MBeanServer 内“重新出现”。例如,您可能在 5 个单独的 JVM (A..E) 中有一个名为java.lang:type=GarbageCollector,name=PS MarkSweep的 GarbageCollector MXBean。中央控制台将拥有自己的实例,然后您还会看到在同一个 MBeanServer 中注册的另外 5 个实例,名称如下:
- //JVM-A/java.lang:type=GarbageCollector,name=PS MarkSweep
- ....
- //JVM-E/java.lang:type=GarbageCollector,name=PS MarkSweep
这是我的 JConsole 中一些级联的示例屏幕截图:
文档可在此处获得。我还在这里创建了一个 Maven 友好的 OpenJDMK 构建,如果这种东西对您有用的话。(在 Sonatype Nexus 上也有各种不同的分叉版本。)
** ===== 更新 ===== **
是的,对此感到抱歉。看起来 OpenJDMK 网站最近被忽略了。
这是用户指南的链接,以及级联章节的快捷方式。这是Tutorial的链接,以及Cascading的快捷方式。
本教程有大量的代码示例。