透過代理訪問 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>
在前面的示例中,您可以看到為註冊在 ObjectName
為 bean:name=testBean
下的 MBean 建立了一個代理。代理實現的介面集由 proxyInterfaces
屬性控制,並且這些介面上的方法和屬性到 MBean 操作和屬性的對映規則與 InterfaceBasedMBeanInfoAssembler
使用的規則相同。
MBeanProxyFactoryBean
可以為透過 MBeanServerConnection
訪問的任何 MBean 建立代理。預設情況下,會查詢並使用本地 MBeanServer
,但您可以覆蓋此設定,並提供指向遠端 MBeanServer
的 MBeanServerConnection
,以支援指向遠端 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
。