मैं एक JMX सेवा URL को समझने की कोशिश कर रहा हूं।
service:jmx:rmi://192.168.30.10:1234/jndi/rmi://192.168.30.10:2344/jmxrmi
यह बहुत अच्छा होगा, अगर कोई मुझे यह समझने में मदद कर सकता है।
धन्यवाद
जवाबों:
मैं इस प्रश्न के लिए पहले लिखे गए उत्तर का पुन: उपयोग करूंगा: Java6 में जोंको कंसोल के माध्यम से टॉमकैट के एमबीसर्वर से कनेक्ट नहीं कर सकता
यह पूर्ण नहीं है, लेकिन इससे मदद मिल सकती है:
मान लीजिए आप JMX सर्वर (उर्फ 'JMX एजेंट' उर्फ 'JVM आप कनेक्ट करना चाहते हैं') के साथ 'लक्षित मशीन' पर चल रहा RMI रजिस्ट्री बंदरगाह 'RMI रजिस्ट्री पोर्ट' पर और JMX RMI सर्वर पोर्ट 'JMX RMI पर सर्वर पोर्ट'।
ध्यान दें:
jmxrmi
।निम्नलिखित यूआरआई सफल कनेक्शन (परीक्षण) को जन्म देगा
service:jmx:rmi://<TARGET_MACHINE>:<JMX_RMI_SERVER_PORT>/jndi/rmi://<TARGET_MACHINE>:<RMI_REGISTRY_PORT>/jmxrmi
यह बुरा लग रहा है। इसे अलग काट दो।
यह URI एक RFC2609 "सेवा स्थान प्रोटोकॉल URL" है (ठीक है, यह वास्तव में एक URI है, ठीक है?)
यह इससे बना है:
service
- निरंतर jmx:rmi
- सेवा प्रकार से बना है: सार प्रकार jmx
और URL योजना rmi
सैप में विघटित होता है:
//<TARGET_MACHINE>:<JMX_RMI_SERVER_PORT>
- ipsite/jndi/rmi://<TARGET_MACHINE>:<RMI_REGISTRY_PORT>/jmxrmi
- URL हिस्साएक अच्छी तरह से सूचित जेएमएक्स ग्राहक जेएमएक्स-ओवर-आरएमआई एक्सचेंज करने के लिए "ipsite" से जुड़ता है; लेकिन JMX क्लाइंट का क्या है जो उस पोर्ट को नहीं जानता है? धीरज...
URL भाग में विघटित हो गया है:
/jndi/
- यह JMX क्लाइंट को यह बताने के लिए लगता है कि यह उस स्थान पर लुकअप जानकारी प्राप्त कर सकता हैrmi://<TARGET_MACHINE>:<RMI_REGISTRY_PORT>/jmxrmi
- हां, हमें JMIX RMI सर्वर के बारे में RMI रजिस्ट्री में लुकअप कुंजी के तहत जानकारी मिलती है jmxrmi
यह कुछ हद तक कार्ट-से-घोड़ा है, क्योंकि किसी को पहले SLP URL के बाद वाले भाग द्वारा दी गई RMI रजिस्ट्री से संपर्क करना होता है ।
सिर खुजाने के बाद, सहजता से, आइए कोशिश करें:
service:jmx:rmi://<TARGET_MACHINE>/jndi/rmi://<TARGET_MACHINE>:<RMI_REGISTRY_PORT>/jmxrmi
हाँ, वह काम करता है! JMX RMI सर्वर पोर्ट अच्छी तरह से रजिस्ट्री से प्राप्त होता है। दूसरे विचारों पर, लक्ष्य मशीन को रजिस्ट्री से भी प्राप्त किया जाना चाहिए, इस प्रकार:
service:jmx:rmi:///jndi/rmi://<TARGET_MACHINE>:<RMI_REGISTRY_PORT>/jmxrmi
और भी बेहतर, वह काम करता है!
संदर्भ:
समझाना:
service:jmx:rmi://192.168.30.10:1234/jndi/rmi://192.168.30.10:2344/jmxrmi
service:jmx:rmi://192.168.30.10:1234
- कहते हैं कि आईपी एड्रेस 192.168.30.10 के साथ मशीन पर एक जेएमएक्स एजेंट है। जेएमएक्स एजेंट आरएमआई पर मूल रूप से जेएमएक्स सेवा (एस) प्रदान करने के लिए (टीसीपी) पोर्ट 1234 का उपयोग कर रहा है (मूल रूप से आरएमआई सर्वर के रूप में कार्य करता है)।/jndi/rmi://192.168.30.10:2344/jmxrmi
- कहते हैं कि RMI पर JMX एजेंट के साथ बातचीत करने के लिए RMI को RMI रजिस्ट्री में पाया जा सकता है जो IP पते 192.168.30.10 के साथ मशीन पर चल रहा है और (TCP) पोर्ट 2344 का उपयोग कर रहा है। RMI स्टब प्राप्त करने के लिए आपको चाहिए "jmxrmi" बंधन देखना।पिछले उत्तर बताते हैं कि URL का दूसरा भाग JMX RMI सर्वर के सर्वर पोर्ट को प्राप्त करना है। वह सही नहीं है। JMX RMI सर्वर पोर्ट (TCP) 1234 है और URL का हिस्सा है। आरएमआई रजिस्ट्री से आपको जो मिलता है वह आरएमआई स्टब ( javax.management.remote.rmi.RMIServerImpl_Stub
) है जिसका उपयोग आप आरएमआई पर जेएमएक्स एजेंट (एमबीएन सर्वर) से बात करने के लिए कर सकते हैं।
उम्मीद है की यह मदद करेगा।
192.168.30.10:1234
इस उदाहरण में) फ़ंक्शन के बिना यूआरएल कैसे हैं ? यानी, जो URL से शुरू होते हैं service:jmx:rmi:///jndi/rmi:
। इसका कारण यह है कि यह सामान्य रूप से इतना भ्रामक है कि जब हम JVM शुरू करते समय एक jmx पोर्ट निर्दिष्ट करते हैं, तो यह कहीं भी RMI का संदर्भ नहीं देता है -Dcom.sun.management.jmxremote.port=2344
:। (ध्यान दें कि मेरे अनुभव में कि jmxremote पोर्ट URL के "RMI रजिस्ट्री" भाग से जुड़ा है, न कि "JMX RMI सर्वर" भाग।)
service:jmx:rmi://192.168.30.10:1234
। वैकल्पिक रूप से आप com.sun.management.—
गुणों का उपयोग कर सकते हैं । एक URL का उपयोग करें जैसे service:jmx:rmi:///…
कि जावा को आईपी लेने दें और आपके लिए पोर्ट करें (अनियमित रूप से या सिस्टम गुणों पर आधारित)। service:jmx:rmi://0.0.0.0:1234
सभी इंटरफेस पर पोर्ट 1234 को बांधने के लिए URL का उपयोग करें । और इसी तरह। उम्मीद है की यह मदद करेगा।
Javax.management.remote.rmi के अनुसार
इस तरह इस यूआरएल को इकट्ठा किया जाता है
service:jmx:rmi://ignoredhost/jndi/rmi://myhost/myname