java - Thread.currentThread().getContextClassLoader() returns multiple object instances -


मेरे पास एक स्टेटलेस स्टोरी बीन है जो एक रनटाइमफैक्चर और एप्लिकेशन बनाता है वस्तु। दोनों वर्ग सामाजिक व्यापार टूलकिट का हिस्सा हैं। अनुप्रयोग का उपयोग गुणों और प्रबंधित-बीन्स फ़ाइलों को पढ़ने के लिए किया जाता है, लेकिन ऐसा नहीं हुआ क्योंकि RuntimeFactory application ऑब्जेक्ट प्राप्त करने में असमर्थ था ।

AbstractRuntimeFactory में मानचित्र के साथ अनुप्रयोग वस्तुओं:

  निजी मानचित्र & lt; classloader, AbstractApplication & gt; एप्लिकेशन = नया हैशमैप & lt; क्लासलोडर, ऐब्स ऍप्लिकेशन्स & gt; ();   

क्लास लोडर इस पद्धति का उपयोग करके सेट है:

  संरक्षित क्लास लोडर getContextClassLoader () {वापस थ्रेड.क्रेंटथीफ्रेड ()। GetContextClassLoader ( ); }   

इस विधि से एप्लिकेशन ऑब्जेक्ट पुनर्प्राप्त किया गया है:

  सार्वजनिक एप्लिकेशन getApplicationUnchecked () {ClassLoader cl = getContextClassLoader () ; वापसी अनुप्रयोगों। सीएएल (सीएल); }   

डीबगिंग के दौरान मैंने देखा कि धागा आईडी एक ही रहता है, लेकिन ClassLoader के दो अलग-अलग उदाहरण हैं। यह कैसे होता है? केवल एक सत्र बीन, रनटाइमफैक्चर और एप्लीकेशन है क्या मुझे एक ही ऑब्जेक्ट वापस नहीं लौटाएगा?

जैसा कि मैंने चारों ओर काम किया है, अब मैं इसका इस्तेमाल करता हूं:

  क्लासलोडर cl = this.getClass ()। GetClassLoader ( );   

जहां यह है रनटाइम फैक्टर , लेकिन मुझे यकीन नहीं है कि यह एक अच्छा समाधान है .. यह एक और जैसा लगता है वास्तविक समस्या के समाधान।

ps: मैं वेब सर्वर पेज को अनुप्रयोग सर्वर के रूप में उपयोग कर रहा हूं।

आपको इस मामले में रनटाइमफैक्टरी सामान का उपयोग करने की आवश्यकता नहीं है और इससे बचने में आसान हो सकता है मैंने पिछले साल दूसरे ग्राहक के साथ काम किया था जो ईजेबी का उपयोग कर रहा था और उन्होंने केवल समापन बिंदु को इन्स्तांत करने का विकल्प चुना, और उन्हें सीधे एंडपोइंट सेटिंग्स का प्रबंधन करना पड़ा। कोड कुछ इस तरह दिखता है:

  मूलभूत अंत बिंदु समापन बिंदु = नया कनेक्शनबासिकईन्डपॉइंट (); endpoint.setUrl (यूआरएल); endpoint.setUser (उपयोगकर्ता); endpoint.setPassword (पासवर्ड); endpoint.setForceTrustSSLCertificate (सही); BlogService blogService = नया ब्लॉग सेवा (समापन बिंदु);    

Comments

Popular posts from this blog

Java - Error: no suitable method found for add(int, java.lang.String) -

c# - passing input text from view to contoller with FacebookContext using Facebook app -

Calling a C++ function from C# by passing a string with variable size to it -