2017-02-22 39 views
8

के लिए जावा 9 आरा समर्थन जावा निगरानी एजेंटों की विशेष आवश्यकताओं का समर्थन करने के लिए जावा 9 (विशेष रूप से आरा) में कोई योजना है?जावा 9 जावागेंट

आमतौर पर, निगरानी एजेंटों को क्लास, पैकेज और मॉड्यूल तक पहुंचने की क्षमता की आवश्यकता होती है जो डिफ़ॉल्ट रूप से मूल जावा अनुप्रयोगों में उपलब्ध नहीं हैं। Java में लोड किए गए मॉनीटरिंग एजेंट -जावाजेंट कमांड लाइन तर्क के माध्यम से मॉड्यूल के रूप में लोड नहीं होते हैं, भले ही जार फ़ाइल में मॉड्यूल-info.class फ़ाइल हो। एकमात्र तरीका है कि मैं अपने निगरानी एजेंट को अनुमतियों के साथ प्रदान करने में सक्षम हूं, कमांड लाइन तर्क जोड़कर जो सभी नामांकित मॉड्यूल को इन अनुमतियां प्रदान करता है।

उत्तर

6

Instrumentation class was extended एक विधि के साथ जो किसी भी मॉड्यूल के पुनर्वितरण की अनुमति देता है। यह, निर्यात, सेवा प्रयोगों और providings आप अतिरिक्त मॉड्यूल पढ़ता जोड़ने की अनुमति देता खोलता है,:

void redefineModule(Module module, 
        Set<Module> extraReads, 
        Map<String,Set<Module>> extraExports, 
        Map<String,Set<Module>> extraOpens, 
        Set<Class<?>> extraUses, 
        Map<Class<?>,List<Class<?>>> extraProvides); 

इसके अलावा, ClassFileTransformer API एक परिवर्तन पर एक जावा Module रजिस्टर करने के लिए बढ़ा दिया गया था:

default byte[] transform(Module module, 
         ClassLoader loader, 
         String className, 
         Class<?> classBeingRedefined, 
         ProtectionDomain protectionDomain, 
         byte[] classfileBuffer) 
        throws IllegalClassFormatException; 

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

वर्तमान में, जावा एजेंट अभी भी किसी भी मॉड्यूलरेशन को लागू किए बिना कक्षा पथ पर लोड किए गए हैं; हालांकि यह जावा 9 के रूप में बदल सकता है अभी तक अंतिम नहीं है।

+0

धन्यवाद। इससे बहुत मदद मिली। नई redefineModule() विधि का प्रयास किया, और ऐसा लगता है कि हमें क्या चाहिए – BradW

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