मेरे पास एक ऐसा प्रोग्राम है जिसके लिए गतिशील रूप से (यानी रन टाइम पर) एक उपलब्ध सॉकेट खोलना और उस पर एक जेएमएक्स एजेंट शुरू करना आवश्यक है। यह जेएमएक्स पैरामीटर जावा कोड के अंदर सेट किया जा रहा है और कमांड लाइन के माध्यम से नहीं। यह ठीक काम करता है। इसके बाद यह (यानी मुद्दा JMX आदेशों आदि) पर नजर रखने की जरूरत है जावा दृश्य वीएम के माध्यम से दूर सेदूरस्थ निगरानी के लिए जावा कोड के माध्यम से जेएमएक्स रिमोट पोर्ट सिस्टम पर्यावरण पैरामीटर कैसे सेट करें?
कार्यक्रम में RMI सर्वर एजेंट बॉक्स प्रबंधन से बाहर की तर्ज पर दिए गए वर्णन पर है: http://download.oracle.com/javase/6/docs/technotes/guides/management/agent.html
सवाल मुझे संक्षेप में सारांशित किया जा सकता है: जावा कोड के माध्यम से इस तरह की कमांड लाइन गुण सिस्टम स्तर पर कैसे सेट किया जा सकता है, ताकि रिमोट प्रोफाइलिंग का उपयोग किया जा सके ??
-Dcom.sun.management.jmxremote.port=1234
"jmxremote.port" और अन्य पैरामीटर कमांड लाइन के माध्यम से स्थापित कर रहे हैं, तो दूरस्थ निगरानी ठीक काम करता है। मैं जावा के माध्यम से ऐसा करने का तरीका खोजने की कोशिश कर रहा हूं और कमांड लाइन के माध्यम से नहीं।
प्रोग्राम कमांड लाइन के माध्यम से बंदरगाह निर्दिष्ट नहीं कर सकता क्योंकि नए उपलब्ध बंदरगाह को रन टाइम पर पता लगाना है।
प्रक्रिया को दूरस्थ निगरानी की आवश्यकता है और यह स्थानीय रूप से ठीक काम करता है। यदि निम्न पैरामीटर कमांड लाइन पर निर्दिष्ट नहीं हैं, तो जावा विजुअल वीएम प्रक्रिया से कनेक्ट नहीं होता है।
-Dcom.sun.management.jmxremote.port=1234
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Djava.rmi.server.hostname=10.0.0.128
मैंने कोशिश की है।
System.setProperty("com.sun.management.jmxremote.port",Integer.toString(port));
यह JMXConnectorServer शुरू करने से पहले प्रोग्राम में किए गए पहले कामों में से एक है। दुर्भाग्य से यह पहचाना नहीं गया है। केवल रन टाइम गुण (यानी कमांड लाइन के माध्यम से निर्दिष्ट जावा विजुअल वीएम द्वारा जेएमएक्स कनेक्शन के लिए मान्यता प्राप्त है)।
इसके अलावा जिस तरह से गुण जावा संग्रह वर्गों से निकाला जा सकता है भर में आया था, लेकिन कैसे संपत्ति का पता लगाने में नहीं पहुंच सका "com.sun.management.jmxremote.port ="
public static void setEnv(Map<String, String> newenv) throws Exception {
Class[] classes = Collections.class.getDeclaredClasses();
Map<String, String> env = System.getenv();
for(Class cl : classes) {
if("java.util.Collections$UnmodifiableMap".equals(cl.getName())) {
Field field = cl.getDeclaredField("m");
field.setAccessible(true);
Object obj = field.get(env);
Map<String, String> map = (Map<String, String>) obj;
//map.clear();
map.putAll(newenv);
}
}
}
किसी भी मदद की सराहना की जाएगी !
आप अपने मूल प्रश्न को संपादित और कोड नमूने है कि आप टिप्पणी में पोस्टिंग की है शामिल होना चाहिए। – Perception