में किसी पैकेज के एकाधिक संस्करणों तक पहुंचें हमारे पास कई एप्लिकेशन हैं जो HTTP अनुरोध करने के लिए अपाचे HTTP क्लाइंट 3 का उपयोग करते हैं। हाल ही में हमने वेब सेवा क्लाइंट बनाने शुरू कर दिए हैं जो विभिन्न कारणों से HTTPClient 4 का उपयोग करते हैं। अपाचे स्टैंस यह है कि "प्रमुख रिलीज पीछे संगत नहीं हैं"। जबकि मैं संस्करण 4 का उपयोग करने के लिए हमारी सभी परियोजनाओं को अपडेट करना पसंद करूंगा, यह बस संभव नहीं है।जावा
तो, जबकि मेरा मुख्य प्रश्न सामान्य है, मेरा विशेष प्रश्न है। मैं उसी एप्लिकेशन में HTTPClient संस्करण 3 और 4 का उपयोग कैसे कर सकता हूं? हमारे मामले में एक एप्लिकेशन एक वेब, डेस्कटॉप, या कमांड लाइन ऐप हो सकता है।
मैंने SO question for java-dynamically-load-multiple-versions-of-same-class पढ़ा है जो अर्द्ध बंद लगता है लेकिन मुझे गतिशील भाग के बारे में बहुत कुछ परवाह नहीं है। असल में मैं चाहता हूं कि जार को ऐप के साथ भेज दिया जाए (उदाहरण के लिए, वेब ऐप के लिए वेब-आईएनएफ/lib) मैं भी OSGi को इस तरह के प्रश्नों में बहुत कुछ बताता हूं लेकिन ऐसा लगता है कि यह अधिक हो सकता है या शायद अत्यधिक जटिल हो सकता है (शायद एक साधारण उदाहरण अन्यथा साबित हो सकता है)।
अंत में मैं एक टीम जार है कि वे में ड्रॉप कर सकते हैं का एक सेट सौंपने के लिए सक्षम होना चाहते हैं और यह सिर्फ HTTP क्लाइंट 3.
यह एक ऐसा मामला है जहां वास्तुशिल्प शासन एक अच्छा विचार रहा होगा: या तो संस्करण 3 के साथ चिपकने का निर्णय लेना या सबकुछ 4 संस्करण में ले जाना। अब आपको पैचवर्क समाधान के लिए कार्यान्वयन लागत का भुगतान करना होगा, और यह सिर्फ समय के साथ बदतर हो जाओ। – Anon
@ आओन: कोई अपराध नहीं, लेकिन स्थिति को जानने के बिना मैं इस तरह के कंबल बयान देने की सलाह नहीं दूंगा। मैंने ऐसी टिप्पणियों को रोकने के लिए "विभिन्न कारणों से" कहा। –
ओएसजीआई कम से कम काम करता है (आपको यह तय करने की ज़रूरत है कि क्या इसकी ओवरकिल है या नहीं), मुझे लाइब्रेरी के प्रत्येक संस्करण के लिए दो वेब सर्वरों के अलावा ऐसा करने के किसी भी छोटे तरीके से नहीं पता है। –