2012-02-19 11 views
9

के साथ काम करता है मैं जावा (गोज़ीरा, स्टॉम्प, एक्टिवैक) के लिए कई स्टॉम्प लाइब्रेरीज़ की कोशिश कर रहा हूं। इन सभी पुस्तकालयों में खराब दस्तावेज हैं, जैसे कि केवल एक उदाहरण है, और मुझे एक गंभीर समस्या है:मुझे एक जावा स्टॉम्प क्लाइंट लाइब्रेरी की आवश्यकता है जो एसएसएल

मुझे SSL समर्थन की आवश्यकता है।

स्टॉम्प + एसएसएल प्रोटोकॉल मौजूद है और सक्रिय एमक्यू द्वारा समर्थित है लेकिन मैं जावा क्लाइंट को ढूंढने में सक्षम नहीं हूं।

+0

बस उत्सुक ... अगर ग्राहक जावा है, क्यों Stomp का उपयोग कर? –

+0

एप्लिकेशन एक एंड्रॉइड एप्लिकेशन है और मैं जेएमएस या ओपनवायर (जहां तक ​​मुझे पता है) का उपयोग नहीं कर सकता। – mgiammarco

+0

क्या आपको एक काम करने वाला स्टॉम्प + एसएसएल क्लाइंट मिला है? – alexvetter

उत्तर

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

मैं JMS Android पर है, जो संदर्भ देता the experimental Stomp API ActiveMQ 5.2 और अधिक से अधिक (उदाहरण के नीचे की नकल की)

भी उल्लेख किया

कि REST API, मोबाइल उपकरणों के लिए एक बेहतर फिट हो सकता है राज्य बनाए रखा जाना करने के लिए अनुमति है में शामिल बारे में this forum discussion पाया पूरी तरह से दलाल पर।

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

धन्यवाद लेकिन मैंने कम से कम तीन जावा स्टॉम्प क्लाइंट को पाया (और कोशिश की) और वे काम करते हैं। दुर्भाग्यवश कोई एसएसएल और मुझे इसकी आवश्यकता नहीं है। आरईएसटी विचार के लिए धन्यवाद लेकिन मैं कोशिश करता हूं कि मैं स्टंप के साथ सभी प्रयासों को विफल कर दूंगा। – mgiammarco

+0

क्या आप वाकई अपने एसएसएल कॉर्ट काम कर रहे हैं? क्या आपने किसी भी STOMP + SSL क्लाइंट (गैर-जावा) के साथ सफलता प्राप्त की है? –

+0

मैं कह सकता हूं कि मैंने stomp + ssl प्रोटोकॉल का उपयोग करने के लिए सक्रियmq सर्वर को सफलतापूर्वक कॉन्फ़िगर किया है। टेलनेट के साथ प्रयास किया यह एक एसएसएल बातचीत शुरू करता है। मैंने अभी तक किसी भी ग्राहक (जावा या गैर जावा) के साथ प्रयास नहीं किया है। – mgiammarco

2

सुनिश्चित नहीं हैं कि यह Android पर काम करता है, लेकिन लायक एक कोशिश FuseSource StompJMS ग्राहक Github पर उपलब्ध है। यह hwatdispatch लाइब्रेरी का उपयोग करता है जिसमें मानक टीसीपी और एसएसएल ट्रांसपोर्ट दोनों निर्मित होते हैं। वैसे भी एक शॉट के लायक है।

+0

मैंने आपके सुझाव के बाद इसे आजमाया है, मैंने देखा है कि यह एसएसएल का समर्थन करता है, लेकिन इस तथ्य के कारण कि कोई उदाहरण नहीं है और कोई दस्तावेज़ नहीं है, मैं कीस्टोर को कॉन्फ़िगर करने में सक्षम नहीं हूं और इसलिए एसएसएल कनेक्शन विफल हो जाता है। कोई उपाय? – mgiammarco

+0

ठीक है, मैं पुष्टि करता हूं कि फ्यूजसोर्स स्टॉम्प कार्यान्वयन एसएसएल के साथ काम करता है लेकिन दस्तावेज की कमी है ... – mgiammarco

+0

इसमें एक भयानक लाइसेंस है - यदि आप इसका उपयोग करते हैं तो आपको अपना एप्लिकेशन स्रोत कोड मुफ्त में उपलब्ध कराने की आवश्यकता होगी, जिसका अर्थ है कि यह व्यावसायिक रूप से उपयोग नहीं है। – tentimes

संबंधित मुद्दे