对于最新的稳定版本,请使用 Spring Framework 7.0.6!spring-doc.cadn.net.cn

通过代理访问 MBeans

Spring JMX 允许你创建代理,这些代理会将调用重定向到在本地或远程 MBeanServer 中注册的 MBean。这些代理为你提供了标准的 Java 接口,通过该接口你可以与你的 MBean 进行交互。下面的代码展示了如何为在本地 MBeanServer 中运行的 MBean 配置代理:spring-doc.cadn.net.cn

<bean id="proxy" class="org.springframework.jmx.access.MBeanProxyFactoryBean">
	<property name="objectName" value="bean:name=testBean"/>
	<property name="proxyInterface" value="org.springframework.jmx.IJmxTestBean"/>
</bean>

在前面的示例中,您可以看到,为在ObjectName下注册的MBean创建了一个代理。代理实现的接口集由proxyInterfaces属性控制,这些接口上的方法和属性映射到MBean上的操作和属性的规则与InterfaceBasedMBeanInfoAssembler使用的规则相同。spring-doc.cadn.net.cn

MBeanProxyFactoryBean 可以创建任何可通过 MBeanServerConnection 访问的 MBean 的代理。默认情况下,会找到并使用本地的 MBeanServer,但您可以覆盖此设置并提供一个指向远程 MBeanServerConnectionMBeanServer,以处理指向远程 MBean 的代理:spring-doc.cadn.net.cn

<bean id="clientConnector"
		class="org.springframework.jmx.support.MBeanServerConnectionFactoryBean">
	<property name="serviceUrl" value="service:jmx:rmi://remotehost:9875"/>
</bean>

<bean id="proxy" class="org.springframework.jmx.access.MBeanProxyFactoryBean">
	<property name="objectName" value="bean:name=testBean"/>
	<property name="proxyInterface" value="org.springframework.jmx.IJmxTestBean"/>
	<property name="server" ref="clientConnector"/>
</bean>

在前面的示例中,我们创建了一个指向使用 MBeanServerConnectionFactoryBean 的远程计算机的 MBeanServerConnection。此 MBeanServerConnection 然后通过 server 属性传递给 MBeanProxyFactoryBean。创建的代理通过此 MBeanServerConnection 将所有调用转发到 MBeanServerspring-doc.cadn.net.cn