यह एक बड़ी बात है।जेडीबीसी/ओएसजीआई और बंडल में निर्भरता को स्पष्ट रूप से बताए बिना ड्राइवरों को गतिशील रूप से लोड कैसे करें?
मेरे पास एक अच्छी तरह से संरचित अभी तक एक मोनोलिथिक कोड बेस है जिसमें एक प्राचीन मॉड्यूलर आर्किटेक्चर है (सभी मॉड्यूल इंटरफेस को लागू करते हैं, फिर भी वही क्लासपाथ साझा करते हैं)। मुझे इस दृष्टिकोण की मूर्खता और समस्याओं का एहसास होता है जब मैं एप्लिकेशन लायब्रेरी पर तैनात करने के लिए जाता हूं जिसमें मेरी लाइब्रेरी के विभिन्न विरोधाभासी संस्करण हो सकते हैं।
मैं अभी लगभग 30 जारों पर निर्भर हूं और मध्य-मार्ग हूं हालांकि उन्हें बांध रहा हूं। अब मेरे कुछ मॉड्यूल वर्जन की निर्भरताओं की घोषणा करना आसान है, जैसे कि मेरे नेटवर्किंग घटक। वे जेआरई और अन्य बीएनडीएड पुस्तकालयों के भीतर सांख्यिकीय रूप से कक्षाओं का संदर्भ देते हैं लेकिन मेरे जेडीबीसी से संबंधित घटक क्लास.forनाम (...) के माध्यम से तत्काल होते हैं और किसी भी ड्राइवर में से किसी एक का उपयोग कर सकते हैं।
मैं सेवा क्षेत्र द्वारा ओएसजीआई बंडलों में सबकुछ तोड़ रहा हूं।
- मेरे मूल कक्षाएं/इंटरफेस।
- संबंधित घटकों की रिपोर्ट करना।
- डेटाबेस एक्सेस संबंधित घटक (जेडीबीसी के माध्यम से)।
- आदि ....
मैं अपने कोड अभी भी अपने सभी निर्भरता के साथ और सभी (JARJAR के माध्यम से) OSGi बिना एक जार फ़ाइल के माध्यम से OSGi बिना इस्तेमाल किया जा रहा है और यह भी मॉड्यूलर होने के लिए सक्षम होने के लिए के लिए इच्छा ओएसजीआई मेटा-डेटा और निर्भरता जानकारी के साथ दानेदार बंडलों के माध्यम से।
मैं अपने बंडल और मेरी कोड कैसे कॉन्फ़िगर करूँ इतना है कि यह गतिशील classpath पर और/या OSGi कंटेनर पर्यावरण के भीतर किसी भी ड्राइवर का उपयोग कर सकते (फेलिक्स/विषुव/आदि।)?
क्या यह पता लगाने के लिए एक रन-टाइम विधि है कि क्या मैं ओएसजीआई कंटेनर में चल रहा हूं जो कंटेनरों (फ़ेलिक्स/विषुव/आदि) में संगत है?
क्या मुझे ओएसजीआई कंटेनर में एक अलग वर्ग लोडिंग तंत्र का उपयोग करने की आवश्यकता है?
क्या मुझे अपने प्रोजेक्ट में ओएसजीआई कक्षाएं आयात करने की आवश्यकता है ताकि मेरे डेटाबेस मॉड्यूल के माध्यम से एक-बंडल-टाइम-अज्ञात जेडीबीसी ड्राइवर लोड हो सके?
मैं भी, एक ड्राइवर (JNDI के माध्यम से है, जो केवल वास्तव में लागू होता है जब कोई ऐप सर्वर में चल रहे) प्राप्त करने की एक दूसरी विधि है मैं OSGi अवगत अनुप्रयोग सर्वर के लिए मेरी JNDI एक्सेस कोड को बदलने की जरूरत है?
जानकारी के लिए धन्यवाद, विशेष रूप से DynamicImport-पैकेज: * टिप जो आश्चर्यजनक रूप से मैं इंटरनेट खोज के माध्यम से नहीं मिल सका। दूसरे उत्तर के संबंध में, यदि आपके पास समय है तो एक स्निपेट अच्छा हो सकता है। जैसा कि आपने मेरे मुख्य प्रश्नों के उत्तर दिए हैं, वैसे भी मैं इसे अनुमोदित उत्तर के रूप में ध्वजांकित करूंगा। धन्यवाद। – Chris