2009-11-10 16 views
6

जावा आरएमआई यातायात को कैसे स्नीफ और विश्लेषण कर सकता है? Wireshark में केवल बहुत आंशिक समाधान है। मुझे यह जानने की ज़रूरत है कि टीसीपी कनेक्शन को छीनकर कहां से कहा जाता है और कौन सा तर्क कहता है।जावा आरएमआई: स्निफर को

उत्तर

4

क्या आपको इसे "स्नीफ" करने की आवश्यकता है, या आप क्लाइंट या सर्वर पर एक कस्टम सॉकेट फैक्ट्री तैनात कर सकते हैं?

अतीत में मैंने एक कस्टम आरएमआई सर्वर सॉकेट फैक्ट्री बनाई जिसने आरएमआई सेवा द्वारा पढ़ी गई स्ट्रीम पर "टीई" बनाया। चूंकि आरएमआई रनटाइम सामान्य रूप से धाराओं में से एक को पढ़ता है, इसलिए मेरे कोड को जेआरएमपी की प्रतिलिपि भी पार्स करने के लिए मिलती है। मेरे मामले में, मैं रिमोट कॉल्स लॉगिंग कर रहा था, जिसमें धारावाहिक रूप में उनके पैरामीटर शामिल थे, ताकि मैं बाद में लोड परीक्षण के लिए उन्हें "पुनः चला सकूं"। केवल आरएमआई लॉगिंग विकल्पों को सक्षम करने के लिए पर्याप्त नहीं था।

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

वायरसहार्क द्वारा कैप्चर किए गए एप्लिकेशन डेटा पर एक समान दृष्टिकोण लागू किया जा सकता है, लेकिन मैंने कभी वायरशर्क के लिए एक विश्लेषक नहीं लिखा है और मुझे यकीन नहीं है कि यह कितना जटिल है।

0

Ethereal मदद कर सकता है लेकिन यह बहुत कम स्तर है।

+1

वह वायरशर्क है। यह बहुत ज्यादा मदद नहीं करता है। यह केवल कुछ शीर्षलेखों को पार्स करता है – GabiMe

+1

यह मेरे लिए ख़बर है। अच्छी बात यह है कि एक सवाल का जवाब देते समय भी आप कुछ सीख सकते हैं। –

5

आप आरएमआई को अधिक वर्बोज़ बनाने के लिए कुछ java properties सेट कर सकते हैं।

sun.rmi.client.logCalls (1.4 और बाद में)

यदि यह संपत्ति के मूल्य सच है, sun.rmi.client.call लकड़हारा:

शायद आप इस सेटिंग की जरूरत है स्तर स्तर पर सेट किया जाएगा। फिनर। रिमोट कॉल स्तर स्तर पर लॉग इन हैं। फिनर, और रिमोट कॉल से अपवाद स्तर स्तर पर लॉग हैं। ठीक है।

0

मुझे ऐसे उपकरण की जानकारी नहीं है जो तार से आरएमआई यातायात को छीन और समझ सके। यदि कोई और नहीं करता है, तो आपके स्टब्स/कंकाल (यदि आप जावा 5 या बाद में उपयोग कर रहे हैं) या आरएमआई इंफ्रास्ट्रक्चर के कुछ हिस्सों को कोड लॉग आउट करने के लिए कोड के साथ कम इष्टतम समाधान हो सकता है।

आप इसे प्राप्त करने के लिए एओपी या कुछ बाइट-कोड मैनिपुलेशन टूल का उपयोग कर सकते हैं। मैंने सफलता के साथ आपके कार्यों के लिए JavaAssist का उपयोग किया है। यह इस प्रकृति के एक उपकरण के लिए बहुत दोस्ताना है।

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