मेरे पास एक ऐसा एप्लिकेशन है जो ईएआर में पैक किया गया है जिसमें कई जार (ईजेबी, पुस्तकालय, तृतीय पक्ष-पुस्तकालय, ...) और एक ही युद्ध (फिर से कुछ अन्य जार)। एप्लिकेशन को जेईई 7 कंटेनर (वाइल्डफ्लाई 8.0.0.फिनल) में तैनात किया गया है और सीडीआई (वेल्ड 2.1.2. वाइल्डफ्लाई के साथ भेजा गया) का उपयोग कर तैनात किया गया है।बहु-मॉड्यूल अनुप्रयोग में सीडीआई/वेल्ड को समझना
मेरी समझ में, वेल्ड सक्रिय अनुप्रयोग-व्यापी है और इसमें एक ही एप्लिकेशन-व्यापी दृश्य है। इसलिए इससे कोई फर्क नहीं पड़ता कि मैं सीडीआई का उपयोग करना चाहता हूं - यह काम करता है।
लेकिन कुछ संकेत हैं जो इस धारणा को जन्म देते हैं कि यह सच नहीं है। जैसे
जब कुछ मॉड्यूल जो युद्ध में पैक किया जाता है में BeanManager
का उपयोग कर रहा Weld BeanManager for test-ear-1.0-SNAPSHOT.ear/test-webui-frontend-1.0-SNAPSHOT.war/WEB-INF/lib/test-webui-backend-1.0-SNAPSHOT.jar [bean count=76]
मिलती है: BeanManager
की toString
-method विभिन्न मॉड्यूल में विभिन्न उत्पादन को दर्शाता है।
यदि यह सीधे ईएआर में निहित पुस्तकालय में उपयोग किया जाता है: Weld BeanManager for test-ear-1.0-SNAPSHOT.ear/test-ejb3-dao-1.0-SNAPSHOT.jar/ [bean count=224]
।
तो ऐसा लगता है कि ये BeanManagers
एप्लिकेशन के विभिन्न हिस्सों के लिए "ज़िम्मेदार" हैं। क्या ये सच है?
आप सही हैं। ऐसा लगता है कि 'toString' के 'के लिए ...' आउटपुट क्लासलोडर है जो वर्तमान संदर्भ में सक्रिय है। लेकिन क्या इसका मतलब यह है कि एप्लिकेशन सर्वर में कई अलग-अलग "सीडीआई-एप्लिकेशन" (या 'बीनमेनर्स') हैं जो उनके सीडीआई-संदर्भ (जैसे एप्लिकेशन-स्कोप) को पूरी तरह से अलग करते हैं? – MrD
नहीं, एप्लिकेशन में एप्लिकेशन का दायरा मौजूद है, यानी ईएआर आवेदन। लेकिन प्रत्येक मॉड्यूल का अपना बीनमेनगर होता है, जबकि ऐप सर्वर इन उदाहरणों के बीच निर्भरताओं का प्रबंधन कर रहा है। – thobens
तो क्या विभिन्न बीनमेनर्स का कोई व्यावहारिक प्रभाव है? यदि नहीं: 'toString' आउटपुट में मॉड्यूलनाम/क्लासलोडर का उल्लेख करना क्यों फायदेमंद है? – MrD