JSR-160 コネクターの使用

リモートアクセスの場合、Spring JMX モジュールは、サーバー側とクライアント側の両方のコネクターを作成するために、org.springframework.jmx.support パッケージ内に 2 つの FactoryBean 実装を提供します。

サーバー側のコネクター

Spring JMX で JSR-160 JMXConnectorServer を作成、開始、公開するには、次の構成を使用できます。

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

デフォルトでは、ConnectorServerFactoryBean は service:jmx:jmxmp://localhost:9875 にバインドされた JMXConnectorServer を作成します。serverConnector Bean は、ローカルホスト、ポート 9875 の JMXMP プロトコルを介して、クライアントにローカル MBeanServer を公開します。JMXMP プロトコルは、JSR 160 仕様でオプションとしてマークされていることに注意してください。現在、メインのオープンソース JMX 実装である MX4J および JDK で提供されている実装は、JMXMP をサポートしていません。

別の URL を指定し、JMXConnectorServer 自体を MBeanServer に登録するには、次の例に示すように、それぞれ serviceUrl および ObjectName プロパティを使用できます。

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

ObjectName プロパティが設定されている場合、Spring はその ObjectName の MBeanServer にコネクターを自動的に登録します。次の例は、JMXConnector を作成するときに ConnectorServerFactoryBean に渡すことができるパラメーターの完全なセットを示しています。

<bean id="serverConnector"
		class="org.springframework.jmx.support.ConnectorServerFactoryBean">
	<property name="objectName" value="connector:name=iiop"/>
	<property name="serviceUrl"
		value="service:jmx:iiop://localhost/jndi/iiop://localhost: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 ベースのコネクターを使用する場合、名前の登録を完了するには、ルックアップサービス (tnameserv または rmiregistry) を開始する必要があることに注意してください。

クライアント側のコネクター

リモート JSR-160 対応 MBeanServer に MBeanServerConnection を作成するには、次の例に示すように、MBeanServerConnectionFactoryBean を使用できます。

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

Hessian または SOAP を介した JMX

JSR-160 は、クライアントとサーバーの間で通信が行われる方法の拡張を許可します。前のセクションで示した例では、JSR-160 仕様(IIOP および JRMP)および(オプションの)JMXMP で必要な必須の RMI ベースの実装を使用しています。次の例に示すように、他のプロバイダーまたは JMX 実装(MX4J (英語) など)を使用することにより、単純な HTTP または SSL などを介して SOAP または Hessian などのプロトコルを利用できます。

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

前の例では、MX4J 3.0.0 を使用しました。詳細については、MX4J の公式ドキュメントを参照してください。