2011-08-17 19 views
10

लागू करने के लिए ओएसजीआई का उपयोग करना मैं जो करना चाहता हूं वह मेरे कोड के लिए "लॉन्चर" ढांचा बनाना है, जो एक यूआरएल और एक पूर्वनिर्धारित संस्करण योजना प्रदान करता है: 1) जांच करें कि कोई अपडेट मौजूद है 2) अद्यतन डाउनलोड करें 3) अद्यतन 4) "री-रन" एप्लिकेशनऑटो-अपडेट

मैं चाहता हूं कि) यह सब मौजूदा जेवीएम के अंदर करें और बी) प्लेटफ़ॉर्म स्वतंत्र हो। सही आदेश सही है? ओएसजीआई और अपाचे फेलिक्स के मेरे (सीमित) ज्ञान के आधार पर मुझे पूरा यकीन है कि यह संभव है, लेकिन मैं वास्तव में विवरण में खो रहा हूं।

अद्यतन के लिए जांचना और डाउनलोड करना तुच्छ है। "पुराने" बंडल को उतारने के लिए और "नया" बंडल लोड करने के कारण जहां मैं अटक गया हूं। मैंने अतीत में ओएसजीआई काम किया है लेकिन यह इससे बहुत कम गतिशील था। सही दिशा में एक अच्छी शुरुआत या हार्ड शेव की सराहना की जाएगी।

यदि मैं पहले से ही एक मुफ्त लाइब्रेरी के साथ हल हो गया है, तो मुझे गंभीरता से हल कर रहा हूं, तो मुझे यह भी बताएं, लेकिन मुझे अब तक कुछ भी नहीं मिला है। :-)

उत्तर

6

आपको इसे डाउनलोड करने की भी आवश्यकता नहीं है, बस यह जांचें कि कोई अपडेट उपलब्ध है या नहीं, फिर बंडल पर बंडल.अपडेट (इनपुटस्ट्रीम) को कॉल करें जिसे अपडेट करने की आवश्यकता है, आमतौर पर पैकेजएडमिन को कॉल के बाद। ताज़ा करें पैकेज() बाद में।

+0

हो जाएगा ताकि पिछले बंडल को सही ढंग से खोलने का कारण बनता है? अद्यतन के बाद मौजूदा बंडल का क्या होता है (यानी हार्ड ड्राइव पर)? – user453385

+0

रिचर्ड का जवाब संक्षिप्त और सही है, देखें http://www.osgi.org/javadoc/r4v43/org/osgi/framework/Bundle.html#update%28java.io.InputStream%29 - (पुराना) बंडल का राज्य UNINSTALLED में बदला जा सकता है, इस मामले में यह अब उपलब्ध नहीं है। सुनिश्चित नहीं है कि प्रत्येक ढांचे के क्या काम करते हैं - वे निश्चित रूप से पुनरारंभ के बीच बंडलों पर पकड़ लेंगे, मुझे लगता है कि एक अनइंस्टॉल किया गया बंडल पूरी तरह से हटा दिया जाता है (जब तक कचरा संग्रह बाधित नहीं होता है, साथ ही डिस्क कैश भी होता है)। ओएसजीआई आपकी जरूरतों के लिए एकदम सही फिट है, जो लचीला केवल मैवेन रेपो और पैक्स एमवीएन यूआरएल हैंडलर – earcam

+0

के साथ किया जा सकता है, ताज़ा बंडल को "अनबिंड" करने और कचरा संग्रह के लिए उपलब्ध होने का कारण बनता है। सीधे अपडेट के बाद हार्ड ड्राइव पर और स्मृति में बंडल के दो संशोधन होते हैं, यह मानते हुए कि अन्य बंडलों में अद्यतन बंडल पर निर्भरता थी। यही कारण है कि रीफ्रेश आवश्यक है, क्योंकि आप किसी भी निर्भर बंडल को नए संशोधन में स्विच करना चाहते हैं। एक बार ताज़ा होने के बाद, स्मृति या डिस्क में अद्यतन बंडल का केवल एक संशोधन होता है। –

4

आप अच्छी तरह से ज्ञात प्रावधानीकरण समाधान है कि आप के बजाय अपने सभी कदम कर सकते हैं जाँच कर सकते हैं (एक नया संस्करण, डाउनलोड के लिए जाँच,/अद्यतन को स्थापित, आदि को पुनः आरंभ)

  1. विषुव ढांचे के लिए: p2 http://www.eclipse.org/equinox/p2/
  2. किसी भी OSGi R4 ढांचे के लिए: अपाचे ऐस http://incubator.apache.org/ace/a-brief-introduction.html

सादर, दमयेत्रो

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

  • कोई संबंधित समस्या नहीं^_^