对于最新的稳定版本,请使用 Spring Framework 6.2.10spring-doc.cadn.net.cn

使用 JSR-160 连接器

对于远程访问,Spring JMX 模块提供了两个FactoryBeanorg.springframework.jmx.support用于创建服务器端和客户端的包 连接。spring-doc.cadn.net.cn

服务器端连接器

让 Spring JMX 创建、启动和公开 JSR-160JMXConnectorServer,您可以使用以下配置:spring-doc.cadn.net.cn

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

默认情况下,ConnectorServerFactoryBean创建一个JMXConnectorServer绑定到service:jmx:jmxmp://localhost:9875. 这serverConnectorbean 因此公开了 当地MBeanServer通过本地主机上的 JMXMP 协议端口 9875 发送到客户端。 注意 JMXMP 协议被 JSR 160 规范标记为可选。 现在 主要的开源 JMX 实现 MX4J 和 JDK 提供的实现不支持 JMXMP。spring-doc.cadn.net.cn

要指定其他 URL 并注册JMXConnectorServer本身与MBeanServer,您可以使用serviceUrlObjectName属性,分别,如以下示例所示:spring-doc.cadn.net.cn

<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 会自动注册您的连接器替换为MBeanServer在那个下ObjectName. 以下示例显示了完整的参数,您可以将其传递给ConnectorServerFactoryBean创建JMXConnector:spring-doc.cadn.net.cn

<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 的连接器时,您需要查找服务 (tnameservrmiregistry) 启动,以便完成名称注册。spring-doc.cadn.net.cn

客户端连接器

要创建MBeanServerConnection到启用了 JSR-160 的远程MBeanServer,您可以使用MBeanServerConnectionFactoryBean,如以下示例所示:spring-doc.cadn.net.cn

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

JMX over Hessian 或 SOAP

JSR-160 允许扩展客户端之间进行通信的方式和服务器。前几节中显示的示例使用了基于 RMI 的强制性实现JSR-160 规范(IIOP 和 JRMP)和(可选)JMXMP 所要求的。通过使用其他提供程序或 JMX 实现(例如 MX4J),您可以通过简单的 HTTP 或 SSL 等方式利用 SOAP 或 Hessian 等协议,如以下示例所示:spring-doc.cadn.net.cn

<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文档。spring-doc.cadn.net.cn