在我的messagedriven项目中,我有一点需要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上直接设置信任库?
答案 0 :(得分:0)
不,您不能直接在jmxConnection上设置信任库,但是,您可以使用该环境映射为jmxConnection设置SslRMIServerSocketFactory和SslRMIClientSocketFactory。这两个类将管理服务器和客户端的SSL套接字。我相信上述两个类的环境贴图键是&#34; jmx.remote.rmi.server.socket.factory&#34;和&#34; jmx.remote.rmi.client.socket.factory&#34;分别。
您还需要同时设置&#34; javax.net.ssl.trustStore&#34;和&#34; javax.net.ssl.trustStorePassword&#34; spring项目中的java属性(通过在运行时传递环境变量或者自己在应用程序中显式设置它们。之后你的jmxConnection也将使用SSL。