Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

I need a java stomp client library that works with ssl

I am trying several stomp libraries for java (gozirra, stompj, activemq). All these libraries have poor documentation, such as having only one example, and I have a serious problem:

I need SSL support.

The stomp+ssl protocol exists and is supported by activemq but I am not able to find a Java client that supports it.

like image 684
mgiammarco Avatar asked Feb 19 '12 13:02

mgiammarco


2 Answers

I found this forum discussion about JMS on Android, which references the experimental Stomp API included in ActiveMQ 5.2 and greater (example copied below)

Also mentioned is that the REST API might be a better fit for mobile devices, allowing state to be maintained purely at the broker.

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();
like image 139
Joe Coder Avatar answered Nov 07 '22 19:11

Joe Coder


With library from activemq do it this way :

                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);
like image 33
user3364855 Avatar answered Nov 07 '22 20:11

user3364855