透過 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=testBeanObjectName 下註冊的 MBean 建立了 Proxy。Proxy 實作的介面集由 proxyInterfaces 屬性控制,並且這些介面上的方法和屬性對應到 MBean 上的操作和屬性的規則,與 InterfaceBasedMBeanInfoAssembler 使用的規則相同。

MBeanProxyFactoryBean 可以建立 Proxy,連線到可透過 MBeanServerConnection 存取的任何 MBean。預設情況下,會找到並使用本地 MBeanServer,但您可以覆寫此設定並提供指向遠端 MBeanServerMBeanServerConnection,以適用於指向遠端 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