Accessing MBeans through Proxies
Spring JMX 允许你创建代理,该代理会重新路由对 alocal 或 remote MBeanServer
中注册的 MBean 的调用。这些代理为你提供了标准 Java 接口,你可以通过该接口与 MBean 交互。以下代码显示了如何为在 local 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。默认情况下,会找到并使用 local MBeanServer
,但你可以覆盖它,并提供一个指向 remote MBeanServer
的 MBeanServerConnection
,以迎合指向 remote MBean 的代理:
<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>
在上一个示例中,我们创建了一个 MBeanServerConnection
,该连接指向使用 MBeanServerConnectionFactoryBean
的远程计算机。然后通过 server
属性将此 MBeanServerConnection
传递给 MBeanProxyFactoryBean
。创建的代理通过此 MBeanServerConnection
将所有调用转发到 MBeanServer
。