透過代理訪問 MBeans

Spring JMX 允許您建立代理,將呼叫路由到註冊在本地或遠端 MBeanServer 中的 MBeans。這些代理提供標準的 Java 介面,您可以透過該介面與您的 MBeans 互動。以下程式碼展示瞭如何為在本地 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>

在前面的示例中,您可以看到為註冊在 ObjectNamebean:name=testBean 下的 MBean 建立了一個代理。代理實現的介面集由 proxyInterfaces 屬性控制,並且這些介面上的方法和屬性到 MBean 操作和屬性的對映規則與 InterfaceBasedMBeanInfoAssembler 使用的規則相同。

MBeanProxyFactoryBean 可以為透過 MBeanServerConnection 訪問的任何 MBean 建立代理。預設情況下,會查詢並使用本地 MBeanServer,但您可以覆蓋此設定,並提供指向遠端 MBeanServerMBeanServerConnection,以支援指向遠端 MBeans 的代理:

<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 建立了一個指向遠端機器的 MBeanServerConnection。然後透過 server 屬性將此 MBeanServerConnection 傳遞給 MBeanProxyFactoryBean。建立的代理透過此 MBeanServerConnection 將所有呼叫轉發到 MBeanServer