将Spring MBean导出到Tomcat';s MBeanServer实例

将Spring MBean导出到Tomcat';s MBeanServer实例,spring,tomcat,spring-mvc,jmx,Spring,Tomcat,Spring Mvc,Jmx,我正在使用部署在tomcat服务器(我在本地运行)上的WAR文件来处理spring的JMX支持。然而,尽管遵循了发布的指南,我还是无法将我的MBean专门部署到tomcat的MBeanServer实例 我尝试了MBeanExporter和MBeanServerFactoryBean配置的一些变体,但似乎没有任何效果。以下是我当前的配置: <bean id="mbeanServer" class="org.springframework.jmx.support.MBeanServerFact

我正在使用部署在tomcat服务器(我在本地运行)上的WAR文件来处理spring的JMX支持。然而,尽管遵循了发布的指南,我还是无法将我的MBean专门部署到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"/>
我可以通过在JConsole中输入localhost:6969手动连接到mbeanServer,但我只能找到本机catalina MBean。当我翻阅这些MBean时,我甚至找到了对我的项目的引用,但不幸的是,我声明的MBean找不到了

我已经尝试删除MBeanServerFactoryBean声明,希望出口商能够在本地获得tomcat的MBeanServer(没有运气)。我也尝试过服务url的不同变体,但没有成功

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

任何关于问题可能是什么的建议都将不胜感激


谢谢

使用ServiceURL获取MBeanServer连接时,返回的对象不是MBeanServer(即,它不支持registerObject)

尝试将mbeanServer bean替换为:

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


这将为您提供对平台MBeanServer的直接引用,您的JConsole正在连接到该平台。

我能够解决我的问题。我以SpringMVC应用程序的形式编写这个测试,因此有几个级别的上下文,分解成不同的上下文文件

问题很简单,保存MBeanExporter和MBean声明的上下文文件在我实际转到localhost:/之前没有被初始化,这促使servlet开始加载其上下文文件


连接到我的浏览器后,MBean出现在JConsole中。

感谢您的回复,Nicholas。我尝试了你的建议,但仍然无法在JConsole中看到我的MBean。我检查了JConsole检测到的每个MBean服务器,甚至重试了localhost:6969。我也尝试过删除vm参数,但仍然没有成功。我不知道这是否有帮助/我解释得很清楚,但我在jar文件中运行测试并将MBean部署到本地MBeanServer(据我所知,我相信是PlatformMBeanServer)时从未遇到过问题。只有当我在战争中放置一个测试,将它部署到tomcat,并连接到tomcat的MBeanServer(此时,我只能假设我实际上正在建立连接)时,我才能看到我的MBean与JConsole的连接。
<bean id="mbeanServer" class="java.lang.management.ManagementFactory"
    lazy-init="false" factory-method="getPlatformMBeanServer">
</bean>