मैं एक ऐसे वर्ग का एक सिंगलटन उदाहरण बनाना चाहता हूं जो जर्सी में संसाधन या सेवा के रूप में शामिल नहीं है और फिर भी इसकी निर्भरता जर्सी सर्विसलोकेटर से इंजेक्शन दी जाएगी।जर्सी 2.12 में HK2 ServiceLocator कैसे प्राप्त करें?
मैं अपने ResourceConfig निर्माता में मैन्युअल रूप से इस वर्ग के रजिस्टर कर सकते हैं, ResourceConfig तो में ग्रिजली कारखाने विधि के लिए इतना की तरह पारित कर दिया है:
ResourceConfig resourceConfig = new DeviceServiceApplication();
LOGGER.info("Starting grizzly2...");
return GrizzlyHttpServerFactory.createHttpServer(BASE_URI,
resourceConfig, mServiceLocator);
समस्या यह है कि रहता है कैसे जर्सी ServiceLocator के लिए एक संदर्भ पाने के लिए है इसलिए मैं अपनी ऑब्जेक्ट को इंजेक्शन वाले इंजेक्शन के साथ बनाने के लिए createAndInitialize() को कॉल कर सकता हूं। मैं पिछले जर्सी संस्करणों में देखता हूं वहां कन्स्ट्रक्टर वेरिएंट थे जो एक एप्लीकेशन हैंडलर की अपेक्षा करते हैं, जो निश्चित रूप से सेवा लोकेटर तक पहुंच प्रदान करता है (मैं कैसे शुरू करता हूं कि यह एक और मामला है)। आप यह भी देख सकते हैं कि मैंने अभिभावक सेवा लोकेटर में गुजरने का प्रयास किया है, लेकिन निश्चित रूप से संकल्प बच्चे -> अभिभावक लोकेटर से होता है और दूसरी दिशा में नहीं होता है, इसलिए मेरे ऑब्जेक्ट के लिए माता-पिता से पूछना विफल रहता है क्योंकि जर्सी @ कंट्रैक्ट और @ सेवा प्रकार नहीं हैं यहां दिखाई दे रहा है।
क्या मुझे GrizzlyHttpServerFactory के अलावा कुछ और उपयोग करने की आवश्यकता है? क्या मैं अपनी सिंगलटन की निर्भरताओं को छोड़ देता हूं और मैन्युअल रूप से तार करता हूं?
इस एक ही रास्ता है? क्या कोई और तरीका है ? कंटेनर लाइफसाइकिल तक पहुंचना एक ओवरकिल की तरह लगता है। धन्यवाद – Architucas
एक अन्य वैकल्पिक समाधान है: https://stackoverflow.com/questions/21149161/jersey-and-hk2-servicelocator/21998307#21998307 – ozhan
संसाधन कॉन्फ़िगरेशन क्या है? और 'myResourceConfig.getServiceLocator() 'को छोड़कर इस वर्ग को कब बुलाया जा रहा है? –