मुझे एक आवश्यकता है जहां मुझे दिन में 4 बार अपने ओजीआई बंडल को फिर से लोड करने की आवश्यकता है। एक बंडल को फिर से लोड करने का अर्थ है स्थिर उदाहरण बीन्स, ऊंट मार्गों को फिर से लोड करना, पुनर्निर्माण और थ्रेड पूल इंजेक्शन, डेटाबेस कनेक्शन पूल ..etc (अन्य वसंत xml सामान)। मैंने एसएसएच के माध्यम से अपने बंडलों को रीफ्रेश करने की कोशिश की लेकिन मुझे इसके लिए बंडल आईडी की आवश्यकता है जो ओवरटाइम बदल सकता है। तो, मैं एक प्रबंधक बंडल जो प्रतीकात्मक नामों से बंडलों हो जाता है और उन्हें ताज़ा करता लिखा दिन में 4 बारosgi bundles को अपडेट करने के साथ समस्या
osgi impl : felix
container : apache-servicemix-4.4.1-fuse-03-06
Service Dependency spec : Blueprint
सभी आम कक्षाएं इस्तेमाल किया गया है एक सहायक बंडल व्याप्ति सहायक बंडल के साथ 3 बंडलों वहाँ रहे हैं और सेवा इंटरफेस इन 3 बंडलों में से कोई भी कोड साझा नहीं है (उनमें से कोई भी किसी भी पैकेज को निर्यात नहीं करता है)। उनमें से सभी ऊंट वीएम एंडपॉइंट्स और सेवाओं के माध्यम से बातचीत करते हैं। मैं केवल अन्य 3 बंडल रीफ्रेश करता हूं और सहायक बंडल कोई भी सेवाएं प्रदान नहीं करता है।
अब समस्या यह है कि जब भी मैं इन 3 बंडलों पर एक अद्यतन करता हूं तो वे शुरू होते हैं और ठीक काम करते हैं, लेकिन जब भी मैं ऐसा करता हूं तो मुझे jconsole पर 800-900 कक्षाओं में वृद्धि दिखाई देती है। जीसी को मजबूर करना भी इन वस्तुओं को साफ नहीं करता है। तो, ये पुरानी वायर्ड वस्तुएं क्या हो सकती हैं? सेवा निर्भरताओं को स्वचालित रूप से अपडेट किया जाना चाहिए और बंडलों के बीच कोई कोड निर्भरता नहीं है। मैंने अद्यतन के पहले और बाद में कक्षाओं की गिनती में अंतर की जांच की।
मैं कुछ वर्गों की कि गिनती देख सकते हैं दोगुनी हो गई है org.apache.activemq.camel.component.VmComponent, org.apache.commons.dbcp.BasicDataSource तरह आदि और कुछ कस्टम सेम है कि मैं मेरे ऊंट मार्गों में परिभाषित किया है। मैं ऊंट-कोर, ब्लूप्रिंट, क्वार्ट्ज ... आदि के लिए कंटेनर पर निर्भर हूं। बीन्स के साथ वास्तव में क्या होता है, वीएम एंडपॉइंट्स..एटीसी ऊंट-संदर्भ और ब्लूप्रिंट-कॉन्फ़िगरेशन एक्सएमएल अपडेट में परिभाषित घटकों में। एक बार जब आप बंडल अपडेट करते हैं तो मुझे फ्रेमवर्कवायरिंग.फ्रेशबंडल्स() को कॉल करने की अनुशंसा की जाती है। लेकिन, मेरे पास बंडलों के बीच कोई कोड साझाकरण नहीं है और मुझे लगता है कि किसी अन्य निर्भरता कंटेनर को संभालना चाहिए जो मुझे लगता है कि अब गलत है। और मुझे यकीन नहीं है कि servicemix में वर्तमान फ़ेलिक्स फ्रेमवर्क कार्यान्वयन फ्रेमवर्कवायरिंग.फ्रेशबंडल्स() (ref) का समर्थन करता है, मैं इसे काम नहीं कर पा रहा था। मैं इस समस्या को कैसे ठीक करुं ?
धन्यवाद sanre6
क्या आपके पास पुरानी बंडल इंस्टेंस से थ्रेड हैं? – artbristol
हां, उनकी गणना दोगुना हो गई है। क्या आप यह कहने की कोशिश कर रहे हैं कि मुझे बंडल को अपडेट करने से पहले अपने उदाहरण बंद कर दें, ऊंट मार्ग बंद करें? – sanre6
हमें एक ही समस्या मिली। विषुव कार्यान्वयन पर स्विच करने से यह समस्या गायब हो जाती है, तो मुझे फ़ेलिक्स ओएसजीआई कंटेनर के साथ कोई समस्या संदेह है। –