Java 如何在ssl中使用activemq

Java 如何在ssl中使用activemq,java,ssl,jms,activemq,jndi,Java,Ssl,Jms,Activemq,Jndi,我试图通过jms(activemq)发送消息,但我希望它采用ssl协议。 目前它在tcp中工作 我使用jndi,有一个虚拟主题和两个队列。有人能帮帮我吗,我试过这个,但我卡住了服务器无法启动: thx 编辑:日志显示:“对实体“needClientAuth”的引用必须以“;”分隔符结尾。”我将回答我自己的问题: 首先,在..../apache-activemq-5.11.1/conf/activemq.xml中: <transportConnectors> <transp

我试图通过jms(activemq)发送消息,但我希望它采用ssl协议。 目前它在tcp中工作

我使用jndi,有一个虚拟主题和两个队列。有人能帮帮我吗,我试过这个,但我卡住了服务器无法启动:

thx


编辑:日志显示:“对实体“needClientAuth”的引用必须以“;”分隔符结尾。”

我将回答我自己的问题:

首先,在..../apache-activemq-5.11.1/conf/activemq.xml中:

<transportConnectors>
  <transportConnector name="ssl" uri="ssl://0.0.0.0:61617?trace=true&amp;needClientAuth=true"/>
</transportConnectors>
然后,我在“amq client.ts”和“amq client.ks”的帮助下,从我的服务器下载到我的PC(我在windows上开发,在linux上开发)

我在eclipse中将这两个文件用作源代码。(我不会解释怎么做)

最后,在eclipse中,我只需更改一件事,即用ActiveMQSslConnectionFactory替换QueueConnectionFactory:

所以我擦掉了

QueueConnectionFactory connFactory = (QueueConnectionFactory) ctx
                    .lookup("jms/ConnectionFactory");
取而代之的是:

ActiveMQSslConnectionFactory connectionFactory = new ActiveMQSslConnectionFactory(url);
            try {
                connectionFactory.setTrustStore(CLIENT_TS_FILE);
                connectionFactory.setTrustStorePassword("PASSWORD asked while TS file made");
                connectionFactory.setKeyStore(CLIENT_KS_FILE);
                connectionFactory.setKeyStorePassword("PASSWORD asked while KS file made");
            } catch (Exception e) {
                throw new MotorException(
                        "JMS Connection Failed (Trust store or key store weren't found) : ",
                        e);
            }

互联网上几乎没有什么东西,至少对于activemq和ssl来说,它可能会帮助某些人。

请发送日志好吗?在这里放置整个跟踪,需要“;”这并不意味着有问题,一定是缺少了分号。谢谢你的帮助:事实上,在activemq网站上,它是这样写的:然而他们忘记了“&;”所以当然JMS崩溃了,但是谢谢你,我们可以提供ssl urllol吗?是的,我有点懒,但在Eclipse中添加文件作为源代码很常见。。。;我是说…谢谢你,伊戈尔,这正是我需要的
QueueConnectionFactory connFactory = (QueueConnectionFactory) ctx
                    .lookup("jms/ConnectionFactory");
ActiveMQSslConnectionFactory connectionFactory = new ActiveMQSslConnectionFactory(url);
            try {
                connectionFactory.setTrustStore(CLIENT_TS_FILE);
                connectionFactory.setTrustStorePassword("PASSWORD asked while TS file made");
                connectionFactory.setKeyStore(CLIENT_KS_FILE);
                connectionFactory.setKeyStorePassword("PASSWORD asked while KS file made");
            } catch (Exception e) {
                throw new MotorException(
                        "JMS Connection Failed (Trust store or key store weren't found) : ",
                        e);
            }