使用 JSR-160 連接器

對於遠端存取,Spring JMX 模組在 org.springframework.jmx.support 套件內提供兩個 FactoryBean 實作,用於建立伺服器端和用戶端連接器。

伺服器端連接器

為了讓 Spring JMX 建立、啟動和公開 JSR-160 JMXConnectorServer,您可以使用以下組態

<bean id="serverConnector" class="org.springframework.jmx.support.ConnectorServerFactoryBean"/>

預設情況下,ConnectorServerFactoryBean 會建立繫結至 service:jmx:jmxmp://127.0.0.1:9875JMXConnectorServer。因此,serverConnector bean 透過 localhost 上的 JMXMP 協定 (埠 9875) 向用戶端公開本機 MBeanServer。請注意,JSR 160 規範將 JMXMP 協定標記為選用。目前,主要的開放原始碼 JMX 實作 MX4J 和 JDK 提供的實作都不支援 JMXMP。

若要指定另一個 URL 並向 MBeanServer 註冊 JMXConnectorServer 本身,您可以分別使用 serviceUrlObjectName 屬性,如下列範例所示

<bean id="serverConnector"
		class="org.springframework.jmx.support.ConnectorServerFactoryBean">
	<property name="objectName" value="connector:name=rmi"/>
	<property name="serviceUrl"
			value="service:jmx:rmi://127.0.0.1/jndi/rmi://127.0.0.1:1099/myconnector"/>
</bean>

如果設定了 ObjectName 屬性,Spring 會使用該 ObjectName 自動向 MBeanServer 註冊您的連接器。下列範例顯示您可以傳遞給 ConnectorServerFactoryBean 以建立 JMXConnector 的完整參數集

<bean id="serverConnector"
		class="org.springframework.jmx.support.ConnectorServerFactoryBean">
	<property name="objectName" value="connector:name=iiop"/>
	<property name="serviceUrl"
		value="service:jmx:iiop://127.0.0.1/jndi/iiop://127.0.0.1:900/myconnector"/>
	<property name="threaded" value="true"/>
	<property name="daemon" value="true"/>
	<property name="environment">
		<map>
			<entry key="someKey" value="someValue"/>
		</map>
	</property>
</bean>

請注意,當您使用基於 RMI 的連接器時,您需要啟動查閱服務 (tnameservrmiregistry) 才能完成名稱註冊。

用戶端連接器

若要建立與遠端啟用 JSR-160 的 MBeanServerMBeanServerConnection,您可以使用 MBeanServerConnectionFactoryBean,如下列範例所示

<bean id="clientConnector" class="org.springframework.jmx.support.MBeanServerConnectionFactoryBean">
	<property name="serviceUrl" value="service:jmx:rmi://127.0.0.1/jndi/rmi://127.0.0.1:1099/jmxrmi"/>
</bean>

透過 Hessian 或 SOAP 的 JMX

JSR-160 允許擴充用戶端和伺服器之間進行通訊的方式。先前章節中顯示的範例使用 JSR-160 規範 (IIOP 和 JRMP) 和 (選用) JMXMP 所需的強制性基於 RMI 的實作。透過使用其他提供者或 JMX 實作 (例如 MX4J),您可以利用諸如 SOAP 或 Hessian over simple HTTP 或 SSL 等協定,如下列範例所示

<bean id="serverConnector" class="org.springframework.jmx.support.ConnectorServerFactoryBean">
	<property name="objectName" value="connector:name=burlap"/>
	<property name="serviceUrl" value="service:jmx:burlap://127.0.0.1:9874"/>
</bean>

在先前的範例中,我們使用了 MX4J 3.0.0。如需更多資訊,請參閱官方 MX4J 文件。