我使用MBeanServerFactory.createMBeanServer创建一个mbean服务器并使用它注册mbeans.我可以在jconsole中找到mbean服务器,但是当我连接到它时,我看不到已注册的mbeans.这是代码:
public static void main(String[] args) throws Exception
{
MBeanServer mbeanServer = MBeanServerFactory.createMBeanServer("example");
ObjectName objectName = new ObjectName("example:type=simpleMbean");
Simple simple = new Simple (1, 0);
mbeanServer.registerMBean(simple, objectName);
while (true)
{
}
}
Run Code Online (Sandbox Code Playgroud)
如果我使用platformMBeanServer并将mbean注册到它,而不是创建一个mbean服务器,我可以在jconsole中看到mbean.知道做createMBeanServer时我还需要做什么?
小智 2
我昨天遇到了这个问题,但设法解决了这个问题。我花了一些时间这样做,所以我认为这篇文章将有助于节省其他人的时间。
首先,您可以在 java 代码中注册您的 bean,如您在 main 方法中的帖子中所述。但我觉得如果用Spring的话就简单多了。
查看此链接以获取更多信息;http://static.springsource.org/spring/docs/2.0.x/reference/jmx.html
您需要避免一些漏洞。不要在应用程序中启动两个 MBeans 服务器。
我使用了这个配置文件:
<bean id="mbeanExporter" class="org.springframework.jmx.export.MBeanExporter" lazy-init="false">
<property name="beans">
<map>
<entry key="bean:name=beanName" value-ref="dataSource"/>
</map>
</property>
<property name="registrationBehaviorName" value="REGISTRATION_REPLACE_EXISTING"/>
</bean>
Run Code Online (Sandbox Code Playgroud)
使用此配置将 bean 名称附加到 MBeanExporter。确保“lazy-init”设置为 false。请注意,我在网络应用程序中使用此配置。Web应用程序部署在tomcat内部。所以tomcat已经有了MBean服务器。因此您无需明确提供。如果以独立模式运行它,则需要启动 MBean 服务器并进行相应配置。
另请注意,您需要在 tomcat 的 catalina.bat 文件中添加以下属性。设置CATALINA_OPTS = -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port = 8088 -Dcom.sun.management.jmxremote.ssl = false -Dcom.sun.management.jmxremote.authenticate = false -Dcom。 sun.management.jmxremote.hostname =“本地主机”
在本例中,Jmx 连接器端口是 8088,主机名是“localhost”一旦启动 tomcat,您需要启动 jconsole(我不会在这里告诉如何启动它)然后单击“RemoteProcess”并输入“localhost:8088”并连接到 tomcat 的 MBean 服务器。然后转到 jconsole 中的 MBean 选项卡,您应该在那里看到您的 MBean。