Java 强制弹簧&x27;s MBeanExporter以使用特定MBeanServer
我有一个运行在JBoss4.2.2上的web应用程序。为了监控性能,我启用了Java5附带的内部平台JMX服务器。换言之,我补充说:Java 强制弹簧&x27;s MBeanExporter以使用特定MBeanServer,java,spring,jboss,jmx,mbeans,Java,Spring,Jboss,Jmx,Mbeans,我有一个运行在JBoss4.2.2上的web应用程序。为了监控性能,我启用了Java5附带的内部平台JMX服务器。换言之,我补充说: -Dcom.sun.management.jmxremote 到JBoss的启动脚本。这正如预期的那样有效。但是,因此,所有MBean现在都在平台MBeanServer上注册。我不想这样,我想让他们在JBoss的MBeanServer上注册 困难在于我使用Spring注册我的托管bean。为此,使用了MBeanExporter。因此,我需要告诉我的MBeanEx
-Dcom.sun.management.jmxremote
到JBoss的启动脚本。这正如预期的那样有效。但是,因此,所有MBean现在都在平台MBeanServer上注册。我不想这样,我想让他们在JBoss的MBeanServer上注册
困难在于我使用Spring注册我的托管bean。为此,使用了MBeanExporter。因此,我需要告诉我的MBeanExporter
在注册bean时使用JBoss的MBeanServer。但是,MBeanExporter
中影响所使用服务器的唯一公开方法是setServer(MBeanServer MBeanServer)
。问题是我只知道如何以编程方式获取对正确MBeanServer的引用,而不知道如何在Spring的XML中获取引用,在XML中声明MBeanExporter
我的选择似乎是:
MBeanExporter
,覆盖某些方法,以便加载正确的MBeanServerPostBeanProcessor
查找JBoss的MBeanServer,然后调用setServer
如果可以通过编程方式获取引用,为什么不能通过MBeanExporter#server属性将其连接起来?可以使用JBoss API中的静态工厂方法将MBeanServer注入MBeanExporter:
<bean class="org.springframework.jmx.export.MBeanExporter">
<property name="server">
<bean class="org.jboss.mx.util.MBeanServerLocator" factory-method="locateJBoss"/>
</property>
<!-- Add the rest of your MBeanExporter properties here -->
</bean>
是的,但我需要在MBeanExporter上调用AfterPropertieSet之前执行此操作。我可以用PostBeanProcessor完成这项工作,这是我倾向于的解决方案。。。但是我觉得我正在做的事情应该非常非常简单,非常复杂。为什么你不能设置“server”属性来引用正确的MBeanServer?如果我以编程的方式来做,我需要一些适当的地方来调用setServer。这必须在Spring创建bean之后,但在Spring调用bean上的AfterPropertieSet之前(因为那时使用MBeanServer)。理想情况下,我会在XML中设置它,但在skaffman向我展示如何设置之前,我找不到一个好方法。太好了!这正是我想要的。我以前使用过工厂方法,但我不认为它适合这种用法。