27.5 JSR
27.5.1 服务端连接器
为了使用Spring JMX 来创建,需要使用以下配置启动并暴露JSR-160 JMXConnectorServer:
<bean 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
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
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 class="org.springframework.remoting.rmi.RmiRegistryFactoryBean">
<property name="port" value="1099"/>
</bean>
27.5.2 客户端连接器
下面展示了使用MBeanServerConnectionFactoryBean创建远程JSR-160 MBeanServer 的MBeanServerConnection:
<bean 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 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请参考官方文档.