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

使用 JSR-160 连接器

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

服务器端连接器

要让 Spring JMX 创建、启动并暴露一个 JSR-160 JMXConnectorServer,您可以使用以下配置:spring-doc.cadn.net.cn

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

默认情况下,ConnectorServerFactoryBean 会创建一个绑定到 JMXConnectorServerservice:jmx:jmxmp://localhost:9875。 因此,serverConnector bean 通过 JMXMP 协议在 localhost 的 9875 端口向客户端暴露本地的 MBeanServer。请注意,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

客户端连接器

要创建一个连接到启用了 JSR-160 的远程 MBeanServerConnectionMBeanServer,您可以使用 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>

通过 Hessian 或 SOAP 进行 JMX

JSR-160 允许对客户端与服务器之间的通信方式进行扩展。前面章节中展示的示例使用了 JSR-160 规范所要求的基于 RMI 的强制实现(IIOP 和 JRMP)以及(可选的)JMXMP。通过使用其他提供者或 JMX 实现(例如 MX4J),您可以利用诸如 SOAP 或 Hessian 等协议,通过简单的 HTTP、SSL 或其他协议进行通信,如下例所示: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