我目前使用 Spring 导出我的 JMX bean,并且对此非常满意。在另一个容器(例如 Jetty、Tomcat)上运行时,我可以简单地使用 JConsole 或 JVisualVM 进行连接并访问我的 MBean。
我已经尝试使用如何在 WebSphere 中启用 JMX 中的说明连接到 WebSphere ,但没有成功。
在 WebSphere Application Server 7.0 上运行的应用程序上访问 JMX bean 是否有更简单的方法?
我目前使用 Spring 导出我的 JMX bean,并且对此非常满意。在另一个容器(例如 Jetty、Tomcat)上运行时,我可以简单地使用 JConsole 或 JVisualVM 进行连接并访问我的 MBean。
我已经尝试使用如何在 WebSphere 中启用 JMX 中的说明连接到 WebSphere ,但没有成功。
在 WebSphere Application Server 7.0 上运行的应用程序上访问 JMX bean 是否有更简单的方法?
不确定您是否无法连接到 WebSphere7 JMX,或者您可以连接但看不到导出的 MBean。如果是后者,我怀疑您可能正在查看错误的 MBeanServer 实例,因为 WAS 在技术上运行不止一个。
无论哪种方式,要绕过所有这些废话,最好的办法是在 Spring XML 中添加JMXConnectorServer定义。这样,您可以准确控制 JMX 连接的建立方式,并且它将使用标准的 J2SE RMI 远程处理,因此您知道您的 JConsole 将轻松连接到它。
这是一个例子:
<bean id="MBeanServer"
class="org.helios.jmx.util.MBeanServerFactory" lazy-init="false" factory-method="createMBeanServer">
<constructor-arg type="java.lang.String" value="DefaultDomain" />
</bean>
<bean id="MBeanServerJMXUrl"
class="javax.management.remote.JMXServiceURL" lazy-init="false">
<constructor-arg type="java.lang.String" value="service:jmx:rmi:///jndi/rmi://localhost:8003/jmxrmi" />
</bean>
<bean id="RMIRegistry"
class="java.rmi.registry.LocateRegistry"
lazy-init="false"
factory-method="createRegistry">
<constructor-arg value="8003" />
</bean>
<bean id="MBeanServerConnector"
class="javax.management.remote.JMXConnectorServerFactory"
lazy-init="false"
init-method="start"
factory-method="newJMXConnectorServer"
depends-on="RMIRegistry">
<constructor-arg ref="MBeanServerJMXUrl" />
<constructor-arg>
<map/>
</constructor-arg>
<constructor-arg ref="MBeanServer" />
</bean>