|
对于最新稳定版本,请使用 Spring Framework 7.0.6! |
通过代理访问 MBean
Spring JMX 允许你创建代理,将调用重新路由到在本地或远程 MBeanServer 中注册的 MBean。这些代理为你提供了一个标准的 Java 接口,通过该接口你可以与你的 MBean 进行交互。以下代码展示了如何为运行在本地 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,但您可以覆盖此行为,提供一个指向远程 MBeanServerConnection 的 MBeanServer,以支持指向远程 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。然后,此 MBeanServerConnection
通过 MBeanProxyFactoryBean 属性传递给 server。所创建的代理会将所有调用
通过此 MBeanServer 转发到 MBeanServerConnection。