2008-11-06 15 views
6

मेरे पास एक ऐसी प्रणाली है जिसमें विभिन्न सर्वर प्रक्रियाएं जेएमएस ब्रोकर के माध्यम से विभिन्न ग्राहकों से जेएमएस संदेशों के रूप में पारित अनुरोधों को संभालने में हैं।क्या JMS संदेश से मूल आईपी पता प्राप्त करने का कोई तरीका है?

मैं संदेशों के स्रोत की पहचान करने की कोशिश कर रहा हूं। क्या आईपी या मूल के बारे में कुछ पहचान जानकारी प्राप्त करने का कोई तरीका है?

स्पष्टीकरण: मैं पहले से ही ग्राहक अज्ञात उपयोगकर्ताओं द्वारा तैनात किए गए हैं, इसलिए मैं संदेश कक्षाओं को बदलने से बचने के लिए ...

उत्तर

3

एक वैकल्पिक JMS हैडर JMS विनिर्देश JMSXUserID कहा जाता है जो जो उपयोगकर्ता संदेश (जो दलाल पुष्टि करता है और सुनिश्चित करता है स्पूफिंग से बचने के लिए सही है), जो कुछ JMS प्रदाताओं समर्थन भेजने की पहचान करता है में उल्लेख किया है।

उदाहरण के लिए यहाँ, how to enable it in Apache ActiveMQ

1

मैं इतना विश्वास नहीं है कोशिश कर रहा हूँ। कम से कम मैं एक रास्ता खोजने में सक्षम नहीं था।

यदि आपको संदेश के स्रोत पर उत्तर भेजने की आवश्यकता है, तो आप प्रेषक को "JMSReplyTo" संपत्ति सेट कर सकते हैं और उस गंतव्य पर वापस जवाब दे सकते हैं।

या, आप अपनी संदेश स्कीमा को थोड़ा बदल सकते हैं और स्रोत जानकारी संदेश को स्वयं एम्बेड कर सकते हैं। प्रेषक संदेश में खुद को पहचान लेगा और प्राप्तकर्ता इसे वहां से पढ़ सकता है।

0

यदि आपके पास भेजे जा रहे संदेशों के निर्माण पर नियंत्रण है, तो आप हमेशा संपत्ति के रूप में संदेश में आईपी पता जोड़ सकते हैं। फिर आप संदेश पर getStringProperty विधि के साथ मूल्य की जांच कर सकते हैं।

+0

जिंक्स! (हमने बच्चों के रूप में क्या कहा अगर हमने किसी और के साथ एक ही बात कहा) –

+0

हाहा, आप मुझे एक कोक दे रहे हैं :)। – fawce

0

यदि आप संदेश भेजने वाले ग्राहकों के कोड को नियंत्रित करते हैं, तो आप "आईपीओएफएसेंडर" कह सकते हैं, और उस संदेश को संदेश.सेटस्ट्रिंगप्रॉपर्टी() के साथ प्रत्येक संदेश पर शामिल कर सकते हैं।

// client code 
String myIPString = ...; 
Message m = session.createTextMessage(); 
m.setStringProperty("IPOfSender", myIPString); 
... 
+0

यह बिल्कुल आसान नहीं है। आप ग्राहक आईपी का पता कैसे लगाते हैं? अधिकांश आईपी इंट्रानेट में एनएटी के पीछे हैं और आपको केवल 1 9 2.168.100.1 – Marcel

+1

जैसे आंतरिक आईपी मिलेगा, तो आप भाग्य से बाहर हो सकते हैं। - इसे को पूरा करने का कोई मानक तरीका नहीं है - आप स्पष्ट रूप से + में मदद करने के लिए अपने क्लाइंट को नहीं प्राप्त कर सकते हैं + हो सकता है कि आपके जेएमएस कार्यान्वयन में कुछ ऐसा करने की सुविधा हो। पोर्टेबल नहीं है, लेकिन शायद आपके लिए पर्याप्त अच्छा है। –

0

यह आपके जेएमएस सर्वर पर निर्भर करता है। कुछ सर्वरों में एडमिन टूल/एपीआई है जो आपको कनेक्शन विवरण देखने की अनुमति देती है।

0

glassfish का उपयोग करना है अगर आप getJMSMessageID() संदेश के लिए, आप "आईडी के प्रभाव के लिए एक स्ट्रिंग देखना चाहिए देखो: 40-192.168.0.242 (F5: 62: सी 6: 58: 22: 6F) -52,506-122,885,191,641 "। ऐसा लगता है कि आईपी संदेश आईडी का एक सबस्ट्रिंग है।

कृपया ध्यान दें कि यह हमारे सेटअप के तहत मैं देख सकता हूं, इसलिए खेल (यानी वसंत) में अन्य कारक हो सकते हैं, लेकिन मुझे पता है कि स्ट्रिंग हमारे द्वारा प्रोग्रामिक रूप से नहीं बनाई गई थी।

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