27.5.1 服务端连接器
为了使用Spring JMX 来创建,需要使用以下配置启动并暴露JSR-160 JMXConnectorServer:
<bean id="serverConnector" class="org.springframework.jmx.support.ConnectorServerFactoryBean"/>
ConnectorServerFactoryBean创建的JMXConnectorServer默认会绑定到”service:jmx:jmxmp://localhost:9875”.serverConnector通过JMXMP协议在本地的9875端口上将本地的MBeanServer暴露给客户端。注意,JMXMP协议是JSR 160标记为可选协议:当前 ,JMX主要的开源实现MX4J,它只提供了基于JDK的协议,而不支持JMXMP。
分别使用serviceUrl和ObjectName属性来指明另一个URL并把JMXConnectorServer自身注册为一个MBeanServer:
<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 or rmiregistry)来完成名称注册。如果你使用Spring 通过RMI来导出远程服务,那么Spring已经构建了一个RMI注册。如果没有,你可以通过下面的配置简单的启动一个注册:
<bean id="registry" class="org.springframework.remoting.rmi.RmiRegistryFactoryBean"><property name="port" value="1099"/></bean>
27.5.2 客户端连接器
下面展示了使用MBeanServerConnectionFactoryBean创建远程JSR-160 MBeanServer 的MBeanServerConnection:
<bean id="clientConnector" class="org.springframework.jmx.support.MBeanServerConnectionFactoryBean"><property name="serviceUrl" value="service:jmx:rmi://localhost/jndi/rmi://localhost:1099/jmxrmi"/></bean>
27.5.3 通过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请参考官方文档.
