在Spring上通过SSL连接到JMX



在我的消息驱动项目中,我有一点需要JMX,即删除消息队列。

目前,我创建了qpid代理的MBean,如下所示:

<bean name="jmxConnection"
    class="org.springframework.jmx.support.MBeanServerConnectionFactoryBean"
    p:serviceUrl="service:jmx:rmi:///jndi/rmi://localhost:8999/jmxrmi" >
    <property name="environment">
        <map>
            <entry key="jmx.remote.credentials">
                <bean class="org.springframework.util.StringUtils"
                    factory-method="commaDelimitedListToStringArray">
                    <constructor-arg value="username, password" />
                </bean>
            </entry>
        </map>
    </property>
</bean>
<bean id="managedBroker" class="org.springframework.jmx.access.MBeanProxyFactoryBean"
    p:objectName='org.apache.qpid:type=VirtualHost.VirtualHostManager,VirtualHost="default"'
    p:server-ref="jmxConnection" 
    p:proxyInterface="org.apache.qpid.management.common.mbeans.ManagedBroker" />

这是可行的,但我想使用SSL。在代理端,我可以将SSL设置为JMX连接。

Qpid手册指出,必须通过jconsole设置信任库。

jconsole -J-Djavax.net.ssl.trustStore=jmxtruststore.jks -J-Djavax.net.ssl.trustStorePassword=password

是否可以使用Spring直接在jmxConnection上设置信任库?

否,您不能直接在jmxConnection上设置信任库,但是,您可以使用该环境映射为jmxConnect设置SslRMIServerSocketFactory和SslRMIClientSocketFactory。这两个类将管理服务器和客户端的SSL套接字。我相信上面两个类的环境映射的键分别是"jmx.remote.rmi.server.socket.factory"one_answers"jmx.remote.rmi.client.socket.factory"。

您还需要在spring项目中设置"javax.net.ssl.trustStore"one_answers"javax.net.ssl.ttrustStorePassword"java属性(可以在运行时传入环境变量,也可以在应用程序中显式设置它们)。之后,jmxConnection也将使用ssl.

相关内容

  • 没有找到相关文章

最新更新