通过代理访问MBeans
Spring JMX允许您创建代理,将调用重定向到在本地或远程MBeanServer
中注册的MBeans。这些代理为您提供了一个标准的Java接口,通过该接口您可以与您的MBeans进行交互。以下代码展示了如何为在本地MBeanServer
中运行的MBean配置代理:
<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
为bean:name=testBean
下注册的MBean创建了一个代理。代理实现的接口集由proxyInterfaces
属性控制,将这些接口上的方法和属性映射到MBean上的操作和属性的规则与InterfaceBasedMBeanInfoAssembler
使用的规则相同。
MBeanProxyFactoryBean
可以为通过MBeanServerConnection
访问的任何MBean创建代理。默认情况下,会定位并使用本地MBeanServer
,但您可以覆盖此设置,并提供指向远程MBeanServer
的MBeanServerConnection
,以满足指向远程MBeans的代理的需求:
<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
。然后通过server
属性将此MBeanServerConnection
传递给MBeanProxyFactoryBean
。创建的代理将所有调用通过此MBeanServerConnection
转发到MBeanServer
。