java - Thread.currentThread().getContextClassLoader() returns multiple object instances -
मेरे पास एक स्टेटलेस स्टोरी बीन है जो एक इस विधि से डीबगिंग के दौरान मैंने देखा कि धागा आईडी एक ही रहता है, लेकिन जैसा कि मैंने चारों ओर काम किया है, अब मैं इसका इस्तेमाल करता हूं: जहां ps: मैं वेब सर्वर पेज को अनुप्रयोग सर्वर के रूप में उपयोग कर रहा हूं। आपको इस मामले में रनटाइमफैक्टरी सामान का उपयोग करने की आवश्यकता नहीं है और इससे बचने में आसान हो सकता है मैंने पिछले साल दूसरे ग्राहक के साथ काम किया था जो ईजेबी का उपयोग कर रहा था और उन्होंने केवल समापन बिंदु को इन्स्तांत करने का विकल्प चुना, और उन्हें सीधे एंडपोइंट सेटिंग्स का प्रबंधन करना पड़ा। कोड कुछ इस तरह दिखता है: रनटाइमफैक्चर और
एप्लिकेशन बनाता है वस्तु। दोनों वर्ग सामाजिक व्यापार टूलकिट का हिस्सा हैं।
अनुप्रयोग का उपयोग गुणों और प्रबंधित-बीन्स फ़ाइलों को पढ़ने के लिए किया जाता है, लेकिन ऐसा नहीं हुआ क्योंकि
RuntimeFactory
application ऑब्जेक्ट प्राप्त करने में असमर्थ था ।
AbstractRuntimeFactory में
मानचित्र के साथ
अनुप्रयोग वस्तुओं:
निजी मानचित्र & lt; classloader, AbstractApplication & gt; एप्लिकेशन = नया हैशमैप & lt; क्लासलोडर, ऐब्स ऍप्लिकेशन्स & gt; ();
क्लास लोडर इस पद्धति का उपयोग करके सेट है:
संरक्षित क्लास लोडर getContextClassLoader () {वापस थ्रेड.क्रेंटथीफ्रेड ()। GetContextClassLoader ( ); }
एप्लिकेशन ऑब्जेक्ट पुनर्प्राप्त किया गया है:
सार्वजनिक एप्लिकेशन getApplicationUnchecked () {ClassLoader cl = getContextClassLoader () ; वापसी अनुप्रयोगों। सीएएल (सीएल); }
ClassLoader के दो अलग-अलग उदाहरण हैं। यह कैसे होता है? केवल एक सत्र बीन, रनटाइमफैक्चर और एप्लीकेशन है क्या मुझे एक ही ऑब्जेक्ट वापस नहीं लौटाएगा?
क्लासलोडर cl = this.getClass ()। GetClassLoader ( );
यह है
रनटाइम फैक्टर , लेकिन मुझे यकीन नहीं है कि यह एक अच्छा समाधान है .. यह एक और जैसा लगता है वास्तविक समस्या के समाधान।
मूलभूत अंत बिंदु समापन बिंदु = नया कनेक्शनबासिकईन्डपॉइंट (); endpoint.setUrl (यूआरएल); endpoint.setUser (उपयोगकर्ता); endpoint.setPassword (पासवर्ड); endpoint.setForceTrustSSLCertificate (सही); BlogService blogService = नया ब्लॉग सेवा (समापन बिंदु);
Comments
Post a Comment