我有一个在 JBoss 4.2.2 上运行的 Web 应用程序。为了监控性能,我启用了 Java 5 附带的内部平台 JMX 服务器。换句话说,我添加了:
-Dcom.sun.management.jmxremote
到 JBoss 的启动脚本。这按预期工作。但是,因此,所有 MBean 现在都在平台 MBeanServer 上注册。我不希望这样,我希望它们在 JBoss 的 MBeanServer 上注册。
困难在于我使用 Spring 来注册我的托管 bean。为此,MBeanExporter
使用。因此,我需要告诉我MBeanExporter
在注册 bean 时使用 JBoss 的 MBeanServer。但是,影响所使用服务器的唯一公开方法MBeanExporter
是setServer(MBeanServer mBeanServer)
. 问题是我只知道如何以编程方式获取对正确 MBeanServer 的引用,而不是在MBeanExporter
声明 的 Spring 的 XML 中。
我的选择似乎是:
- 编写一个子类
MBeanExporter
,覆盖某些方法,以便加载正确的 MBeanServer - 写一个
PostBeanProcessor
找到 JBoss 的 MBeanServer 然后调用setServer
- JNDI? 仅当 MBeanServer 在 JNDI 中公开时才有效,而我无法找到它。
最惯用的方法是什么?我做的事情真的很傻吗?