|
对于最新的稳定版本,请使用 Spring Framework 7.0.6! |
使用 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://localhost:9875 的 JMXConnectorServer。因此,serverConnector bean 通过 JMXMP 协议在本地主机的端口 9875 上向客户端暴露本地的 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会自动将您的连接器注册到该MBeanServer下的ObjectName。下面的示例显示了您在创建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://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 启用的 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 规范中要求的强制性 RMI 实现(IIOP 和 JRMP)以及(可选的)JMXMP。通过使用其他提供者或 JMX 实现(如 MX4J),您可以利用 SOAP 或 Hessian 等协议通过简单 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://localhost:9874"/>
</bean>
在前面的示例中,我们使用了 MX4J 3.0.0。有关更多信息,请参阅官方 MX4J 文档。