2013-02-28 53 views
0

我正在使用我部署在tomcat服务器上的WAR文件(我已在本地运行)处理Spring的JMX支持。但是,尽管遵循发布的指南,但我无法将我的MBeans专门部署到Tomcat的MBeanServer实例。将Spring MBeans导出到Tomcat的MBeanServer实例

我已经尝试了MBeanExporter和MBeanServerFactoryBean配置的一些变体,似乎没有任何工作。这是我目前的配置:

<bean id="mbeanServer" class="org.springframework.jmx.support.MBeanServerFactoryBean"> 
    <property name="serviceUrl" value="service:jmx:rmi:///jndi/rmi://localhost:6969/jmxrmi"/> 
</bean> 

<bean id="exporter" class="org.springframework.jmx.export.MBeanExporter" lazy-init="false"> 
    <property name="server" ref="mbeanServer"/> 
    <property name="beans"> 
     <map> 
      <entry key="domain:name=notifier" value-ref="mBeanNotifier"/> 
     </map> 
    </property> 
</bean> 

<bean id="mBeanNotifier" class="com.sei.poc.jmx.mbeans.SimpleMBeanNotifier"/> 

而且我已经包含在Tomcat的配置以下参数,以及:

-Dcom.sun.management.jmxremote 
-Dcom.sun.management.jmxremote.port=6969 
-Dcom.sun.management.jmxremote.ssl=false 
-Dcom.sun.management.jmxremote.authenticate=false 

我可以手动输入本地主机连接到MBeanServer:6969到JConsole的,但我只能找到本地的catalina MBeans。当我挖掘这些MBeans时,我甚至找到了对我的项目的引用,但不幸的是,我声明的MBean无处可查。

我试图删除MBeanServerFactoryBean声明,希望导出器能够拿起tomcat的MBeanServer(没有运气)。我尝试过不同的服务网址,也没有成功。

我应该注意到,我能够将MBean部署到本地MBeanServer并使用JConsole查看它们。

任何建议至于什么问题可能会不胜感激。

谢谢!

+0

我不知道这是否有帮助/我解释清楚,但我从来没有遇到过问题,当我在jar文件中运行测试并将MBean部署到本地MBeanServer时(从我读的内容中我相信PlatformMBeanServer)。只有当我在战争中进行测试时,将其部署到tomcat,并连接到tomcat的MBeanServer(此时,我只能假设我实际上正在建立该连接),我无法使用JConsole查看我的MBean。 – Mac 2013-03-01 15:28:59

回答

0

我能解决我的问题。我将这个测试作为Spring MVC应用程序编写,因此具有几个级别的上下文,分解成不同的上下文文件。

问题在于,只有在我实际转到localhost:/时,持有MBeanExporter和MBean声明的上下文文件才会被初始化,这会促使servlet开始加载它的上下文文件。

与我的浏览器连接后,MBeans出现在JConsole中。

2

当您使用ServiceURL获取MBeanServerConnection时,返回的对象不是MBeanServer(即它不支持registerObject)。

尝试用更换您的MBeanServer豆:

<bean id="mbeanServer" class="java.lang.management.ManagementFactory" 
    lazy-init="false" factory-method="getPlatformMBeanServer"> 
</bean> 

这将为您提供一个直接的参考平台MBeanServer,这是你的JConsole的是连接到什么。

+0

谢谢你的回应,尼古拉斯。我尝试了你的建议,但仍然无法在JConsole中看到我的MBean。我检查了JConsole检测到的每个MBean服务器,并且我甚至重试了localhost:6969。尝试去除vm-args并且仍然没有运气。 – Mac 2013-03-01 15:23:12