透過 Proxy 存取 MBean
Spring JMX 可讓您建立 Proxy,將呼叫重新導向至在本地或遠端 MBeanServer
中註冊的 MBean。這些 Proxy 為您提供標準 Java 介面,透過該介面,您可以與 MBean 互動。以下程式碼顯示如何為在本地 MBeanServer
中執行的 MBean 設定 Proxy
<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>
在上述範例中,您可以看到為在 bean:name=testBean
的 ObjectName
下註冊的 MBean 建立了 Proxy。Proxy 實作的介面集由 proxyInterfaces
屬性控制,並且這些介面上的方法和屬性對應到 MBean 上的操作和屬性的規則,與 InterfaceBasedMBeanInfoAssembler
使用的規則相同。
MBeanProxyFactoryBean
可以建立 Proxy,連線到可透過 MBeanServerConnection
存取的任何 MBean。預設情況下,會找到並使用本地 MBeanServer
,但您可以覆寫此設定並提供指向遠端 MBeanServer
的 MBeanServerConnection
,以適用於指向遠端 MBean 的 Proxy
<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
通過 server
屬性傳遞到 MBeanProxyFactoryBean
。建立的 Proxy 通過此 MBeanServerConnection
將所有調用轉發到 MBeanServer
。