2011-09-20 5 views
5

कस्टम क्लास लोडर बनाने के लिए आवश्यकता होने पर मुझे एक साधारण परिदृश्य की तलाश है?परिदृश्य जब किसी को कस्टम क्लास लोडर की आवश्यकता हो सकती है?

इसके अलावा, बस यह पुष्टि करना चाहता था कि बूटस्ट्रैप और एप्लिकेशन क्लास लोडर भी java.lang.ClassLoader को आंतरिक रूप से बढ़ाता है?

+0

अच्छी तरह से जावा एप्लिकेशन सर्वर जैसे टोमकैट को कस्टम क्लास लोडर की आवश्यकता हो सकती है, इस तरह की चीजों के लिए प्रत्येक एप्लिकेशन को लोड किए गए वर्गों का "स्नैपशॉट" दिया जाता है। –

उत्तर

9

संक्षेप में, इसका उपयोग नए कोड को जोड़ने या फ्लाई पर मौजूदा कोड बदलने के लिए किया जा सकता है। यहां इस URL से अधिक विस्तृत स्पष्टीकरण दिया गया है।

कस्टम क्लास लोडर क्यों लिखें? एक कस्टम वर्ग लोडर बनाने के लिए इच्छुक के लिए

तीन मुख्य कारण हैं:

  • विकल्प खजाने से वर्ग लदान करने के लिए।

    यह सबसे आम मामला है, जिसमें एक एप्लिकेशन डेवलपर अन्य स्थानों से कक्षाएं लोड करना चाहता है, उदाहरण के लिए, नेटवर्क कनेक्शन पर।

  • उपयोगकर्ता कोड विभाजन करने के लिए।

    इस मामले को अक्सर एप्लिकेशन डेवलपर्स द्वारा उपयोग किया जाता है, लेकिन व्यापक रूप से सर्वलेट इंजनों में उपयोग किया जाता है।

  • कक्षाओं को उतारने की अनुमति देने के लिए।

    यह मामला उपयोगी है यदि एप्लिकेशन बड़ी संख्या में कक्षाएं बनाता है जो केवल सीमित अवधि के लिए उपयोग किए जाते हैं। चूंकि एक क्लास लोडर कक्षाओं के कैश को बनाए रखता है जो इसे लोड किया गया है, इसलिए इन वर्गों को तब तक अनलोड नहीं किया जा सकता जब तक कि कक्षा लोडर को स्वयं ही संदर्भित नहीं किया जाता है। इस कारण से, सिस्टम और एक्सटेंशन क्लासेस कभी भी अनलोड नहीं होते हैं, लेकिन जब उनके क्लासलोडर होते हैं तो एप्लिकेशन क्लास को अनलोड किया जा सकता है।

+0

धन्यवाद आरएचटी। जैसा कि आपने कहा था "जब उनके क्लासलोडर है तो एप्लिकेशन क्लास को अनलोड किया जा सकता है।" ऐप/वेब सर्वर में एप्लिकेशन क्लास लोडर कभी भी अनलोड हो जाता है। जब हम ऐप/वेब सर्वर बंद करते हैं तो वे समझदारी के अनुसार भी अनलोड हो जाएंगे.ठीक है? निश्चित नहीं है कि विस्तार वर्ग का क्या अर्थ है? –

+0

हाय सच। सबसे पहले मैं देर से प्रतिक्रिया के लिए क्षमा चाहता हूँ। मैं आज इस सवाल पर अपनी प्रतिक्रिया की तलाश में स्टैक ओवरफ्लो लौट आया और मैंने आपकी टिप्पणी देखी। – RHT

+0

आपका प्रश्न - सिस्टम/एक्सटेंशन क्लासेस स्टैक ओवरफ्लो पर एक अलग शीर्ष स्तर का प्रश्न होने के योग्य हैं और यह एक विस्तृत प्रतिक्रिया की योग्यता है, लेकिन संक्षेप में - एप्लिकेशन सर्वर स्वयं ही एक जावा एप्लिकेशन है जो एक जेवीएम के शीर्ष पर बैठता है इसलिए यह स्वयं का है सिस्टम कक्षाएं जिन्हें इसे उपयोग करने या पुस्तकालयों की आवश्यकता होती है जो इसे विभिन्न अनुप्रयोगों में साझा कर सकते हैं। शब्दावली एक विक्रेता से दूसरे में भिन्न होती है लेकिन इस तरह के वर्ग आवेदन के साथ अनलोड नहीं होते हैं। – RHT

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