?
This document uses PHP Chinese website manual Release
Spring JMX允許你創(chuàng)建代理,將調(diào)用重新路由到本地或者遠(yuǎn)程 MBeanServer
上注冊(cè)的MBean。
這些代理提供了一個(gè)標(biāo)準(zhǔn)Java接口,你可以通過(guò)它與MBean交互。以下代碼展示了如何為本地 MBeanServer
配置一個(gè)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>
你可以看到已經(jīng)為以 ObjectName
:bean:name=testBean
注冊(cè)的MBean創(chuàng)建了一個(gè)代理,
該代理實(shí)現(xiàn)的所有接口都由 proxyInterfaces
和映射規(guī)則掌控。
也就是將這些接口上方法,屬性映射為MBean上操作與屬性的規(guī)則,它們與 InterfaceBasedMBeanInfoAssembler
使用的是同一套規(guī)則。
MBeanProxyFactoryBean
能創(chuàng)建一個(gè)任何MBean的代理,可以通過(guò) MBeanServerConnection
來(lái)訪問(wèn)。
默認(rèn)將定位,使用本地的 MBeanServer
。但是,為了適應(yīng)指向遠(yuǎn)程MBean的代理,你可以重載這種行為,提供一個(gè)指向遠(yuǎn)程 MBeanServer
的 MBeanServerConnection
。
<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
構(gòu)建了一個(gè) MBeanServerConnection
指向一個(gè)遠(yuǎn)程主機(jī)。
這個(gè) MBeanServerConnection
之后通過(guò) server
屬性傳給了 MBeanProxyFactoryBean
。
創(chuàng)建的這個(gè)代理將通過(guò) MBeanServerConnection
把所有調(diào)用轉(zhuǎn)發(fā)給 MBeanServer
。