2012-02-19 98 views
9

我正在嘗試java的幾個stomp庫(gozirra,stompj,activemq)。 所有這些庫都具有較差的文檔,例如只有一個示例,並且存在嚴重問題:我需要一個java stomp客戶端庫,與ssl一起工作

我需要SSL支持。

stomp + ssl協議存在並受activemq支持,但我無法找到支持它的Java客戶端。

+0

只是好奇...如果客戶是Java,爲什麼使用踐踏? – 2012-02-19 13:16:19

+0

該應用程序是一個Android應用程序,我不能使用JMS或openwire(據我所知)。 – mgiammarco 2012-02-20 10:37:07

+0

你有沒有發現一個工作單塊+ SSL客戶端? – alexvetter 2013-08-28 09:59:32

回答

2

與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); 
3

我發現this forum discussion約JMS Android上,它引用包括在ActiveMQ的5.2和更高的(例如低於複製)

還提到的是,REST API可能是更適合的移動設備,允許保持狀態the experimental Stomp API純粹在經紀人身上。

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(); 
+0

謝謝,但我發現(並嘗試過)至少三個Java踐踏客戶端,他們的工作。不幸的是沒有SSL,我非常需要它。感謝REST的想法,但我會嘗試一些腳步失敗的嘗試。 – mgiammarco 2012-02-20 19:33:41

+0

你確定你的SSL證書正在工作嗎?你有沒有成功使用任何STOMP + SSL客戶端(非Java)? – 2012-02-24 00:32:11

+0

我可以說我已成功配置activemq服務器以使用stomp + ssl協議。用telnet嘗試啓動一個ssl協商。我還沒有嘗試過任何客戶端(java或非java)。 – mgiammarco 2012-02-24 13:33:57

2

不知道它適用於Android,但值得一試的是Github可用FuseSource StompJMS客戶端。它使用內置標準TCP和SSL傳輸的hwatdispatch庫。無論如何,值得一試。

+0

我按照您的建議嘗試了它,我已經看到它支持ssl,但由於沒有示例和文檔,因此我無法配置密鑰存儲庫,因此ssl連接失敗。任何想法? – mgiammarco 2012-03-11 01:15:06

+0

好的,我確認FuseSource Stomp的實現可以與ssl一起工作,但是缺少文檔... – mgiammarco 2012-04-23 18:02:09

+0

它有一個可怕的許可證 - 如果你使用這個,你需要使你的應用程序源代碼免費可用,這意味着它在商業上是沒有用的。 – tentimes 2012-11-20 20:31:14

相關問題