通过代理访问 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
。