2011-09-22 18 views
5

मैं एक मुख्य विधि में ओएसजीआई फ्रेमवर्क (इक्विनोक्स) चलाने की कोशिश कर रहा हूं। प्रत्येक बार जब मैं फ्रेमवर्क शुरू करता हूं, जब मैं BundleContext.getBundles().length प्रिंट करता हूं, तो यह कहता है कि ढांचे में केवल 1 बंडल स्थापित है (यह निश्चित रूप से सिस्टम बंडल है)। जब मैं अपना पहला बंडल इंस्टॉल करता हूं तो बंडल आईडी अंतिम सत्र से जारी रहेगा। आइए मान लें कि मेरे पास पिछले सत्र में 4 बंडल थे (और मैंने सिस्टम बंडल को रोकने से पहले उन सभी को रोक दिया है और अनइंस्टॉल किया है), पहला बंडल आईडी सेट है 5. अब, मैं जानना चाहता हूं कि फ्रेमवर्क बंडल आईडी का चयन कैसे करता है? फ्रेमवर्क आखिरी सत्र को क्यों याद करता है, भले ही मैंने सभी बंडलों को अनइंस्टॉल किया हो? क्या यह बंडल कैश की वजह से है? और यदि यह है, तो मैं कैश को कैसे साफ़ कर सकता हूं (1 से नंबरिंग को पुनरारंभ करने के लिए)?ओएसजीआई फ्रेमवर्क ने बंडल आईडी कैसे सेट किया?

उत्तर

6

ढांचे में पिछली बार बंडल आईडी है जो लगातार स्टोर में प्रबंधित होती है। यह स्टोर कैसा दिखता है एक ढांचा कार्यान्वयन विस्तार है। जब आप ढांचे को लॉन्च करते हैं, तो आप org.osgi.framework.storage.clean फ्रेमवर्क कॉन्फ़िगरेशन प्रॉपर्टी निर्दिष्ट कर सकते हैं। यह सभी स्थापित बंडलों को साफ़ कर देगा लेकिन मुझे यकीन नहीं है कि यह अंतिम उपयोग किए गए बंडल आईडी को रीसेट करेगा या नहीं।

+0

यह नंबर रीसेट करता है:

एक वैध बंडल आईडी के साथ bundle आदेश equinox/org.eclipse.osgi फ़ोल्डर का निरपेक्ष पथ दिखा सकते हैं। – palacsint

+0

@palacsint - क्या यह कॉन्फ़िगरेशन, आपके उत्तर में उल्लिखित 'विषुव/org.eclipse.osgi' फ़ोल्डर को हटा देता है? – Reza

+0

मुझे लगता है कि यह हटा देता है। (मैंने 'विषुव/org.eclipse.osgi' फ़ोल्डर के अंदर एक खाली निर्देशिका बनाई है और' क्लीन = सत्य 'के साथ ढांचे को शुरू करने के बाद यह चला गया है।) – palacsint

2

equinox/org.eclipse.osgi फ़ोल्डर को हटाने से नंबरिंग रीसेट हो जाती है। हटाए जाने से पहले सुनिश्चित करें कि आपके बंडलों के पास इस फ़ोल्डर के तहत कोई महत्वपूर्ण डेटा नहीं है।

osgi> bundle 7 
slf4j.api_1.6.1 [7] 
    Id=7, Status=ACTIVE  Data Root=D:\temp\test\equinox\org.eclipse.osgi\bundles\7\data 
... 
+0

इस पथ में बंडल स्टोर किस प्रकार का डेटा होगा महत्वपूर्ण हो? – Reza

+1

हो सकता है कि आपके बंडल वहां कुछ लगातार डेटा स्टोर करें। अगर वे वहां कुछ भी नहीं बने रहते हैं तो आमतौर पर इसके बारे में चिंता करने की कोई बात नहीं है। यह मुख्य रूप से आपके बंडलों पर निर्भर करता है। कॉन्फ़िगरेशन मैनेजर की कॉन्फ़िगरेशन की एक और संभावना है, लेकिन मुझे इसके बारे में बहुत कुछ पता नहीं है। हम इस निर्देशिका के बाहर हमारे लगातार डेटा स्टोर करते हैं। – palacsint

संबंधित मुद्दे