Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我需要一个使用ssl的java stomp客户端库_Java_Ssl_Activemq_Stomp - Fatal编程技术网

我需要一个使用ssl的java stomp客户端库

我需要一个使用ssl的java stomp客户端库,java,ssl,activemq,stomp,Java,Ssl,Activemq,Stomp,我正在尝试几个用于java的stomp库(gozirra、stompj、activemq)。 所有这些库的文档都很差,例如只有一个示例,我有一个严重的问题: 我需要SSL支持 stomp+ssl协议存在并且受activemq支持,但我找不到支持它的Java客户端。我在Android上找到了关于JMS的信息,其中引用了activemq 5.2及更高版本(下面复制了示例) 还提到的是,可能更适合移动设备,允许仅在代理上维护状态 StompConnection connection = new Sto

我正在尝试几个用于java的stomp库(gozirra、stompj、activemq)。 所有这些库的文档都很差,例如只有一个示例,我有一个严重的问题:

我需要SSL支持

stomp+ssl协议存在并且受activemq支持,但我找不到支持它的Java客户端。

我在Android上找到了关于JMS的信息,其中引用了activemq 5.2及更高版本(下面复制了示例)

还提到的是,可能更适合移动设备,允许仅在代理上维护状态

StompConnection connection = new StompConnection();
connection.open("localhost", 61613);

connection.connect("system", "manager");
StompFrame connect = connection.receive();
if (!connect.getAction().equals(Stomp.Responses.CONNECTED)) {
    throw new Exception ("Not connected");
}

connection.begin("tx1");
connection.send("/queue/test", "message1", "tx1", null);
connection.send("/queue/test", "message2", "tx1", null);
connection.commit("tx1");

connection.subscribe("/queue/test", Subscribe.AckModeValues.CLIENT);

connection.begin("tx2");

StompFrame message = connection.receive();
System.out.println(message.getBody());
connection.ack(message, "tx2");

message = connection.receive();
System.out.println(message.getBody());
connection.ack(message, "tx2");

connection.commit("tx2");
connection.disconnect();

不确定它是否能在Android上运行,但值得一试的是,该客户端在Android上可用。它使用hwatdispatch库,该库内置了标准TCP和SSL传输。无论如何值得一试

使用activemq中的库,请按以下方式执行:

                System.setProperty("javax.net.ssl.keyStore",
            "/home/foo/.keystore/client.ks");
    System.setProperty("javax.net.ssl.keyStorePassword", "changeme");
    System.setProperty("javax.net.ssl.trustStore",
            "/home/foo/.keystore/client.ts");

    StompConnection connection = new StompConnection();
    SSLSocketFactory factory = (SSLSocketFactory) SSLSocketFactory
            .getDefault();
    SSLSocket sslsocket = (SSLSocket) factory.createSocket("127.0.0.1",
            61612);
    connection.open(sslsocket);

只是好奇。。。如果客户端是Java,为什么要使用Stomp?该应用程序是Android应用程序,我不能使用JMS或openwire(据我所知)。你找到了一个工作正常的Stomp+ssl客户端吗?是的,mgiammarco,链接无法打开。您可以更新吗?谢谢,但我已经找到(并尝试)至少三个java stomp客户端,它们都可以工作。不幸的是没有SSL,我非常需要它。谢谢你的其余想法,但我会在所有尝试失败后尝试使用stomp。你确定你的SSL证书有效吗?您是否成功地使用了任何STOMP+SSL客户端(非Java)?我可以说,我已经成功地将activemq服务器配置为使用STOMP+SSL协议。尝试使用telnet启动ssl协商。我还没有尝试过任何客户端(java或非java)。我按照您的建议尝试过,我看到它支持ssl,但由于没有示例和文档,我无法配置密钥库,因此ssl连接失败。有什么想法吗?好的,我确认FuseSource Stomp实现可以与ssl一起工作,但是缺少文档…它有一个可怕的许可证-如果您使用它,您需要免费提供应用程序源代码,这意味着它在商业上没有用。