2012-10-24 9 views
6

ओएसजीआई एंटरप्राइज़ रिलीज 5 विशिष्टता osgi.extender नामस्थान प्रस्तुत करती है। यह नेमस्पेस उन बंडलों के लिए संभव बनाता है जो मानते हैं कि ब्लूप्रिंट या घोषणात्मक सेवाओं जैसे विस्तारक फ्रेमवर्क में Require-Capability हेडर का उपयोग करके इस निर्भरता को मॉडल करने के लिए स्थापित किए गए हैं।एससीआर विस्तारक क्षमता पर आवश्यकता कैसे घोषित करें?

अध्याय 135.2 osgi.extender नेमस्पेस हमें बताता है कि प्रत्येक विशिष्ट विस्तारक के लिए क्षमता का मूल्य इसी विनिर्देश में निर्दिष्ट किया जाना चाहिए। एक उदाहरण खाका के लिए दिया जाता है:

Provide-Capability: osgi.extender; 
    osgi.extender="osgi.blueprint"; 
    uses:="org.osgi.service.blueprint.container,org.osgi.service.blueprint.reflect" 
    version:Version="1.0" 

हालांकि, अध्याय 112 घोषणात्मक सेवा विशिष्टता क्षमता है कि एक एससीआर कार्यान्वयन प्रदान करता है निर्दिष्ट नहीं है।

पीटर क्रिएन्स blog post on Requirements and Capabilities में एक उदाहरण देता है जो बताता है कि एससीआर की क्षमता osgi.component है। मुझे लगता है कि आखिरकार यह मान चश्मे में ठीक से परिभाषित किया जाएगा। लेकिन तब तक मैं इसका उपयोग नहीं कर सकता।

चूंकि Require-Capability और Provide-Capability हेडर ओएसजीआई कोर रिलीज 4.3 में पेश किए गए थे, तो फ्रेम ढांचे के कार्यान्वयन में पहले से ही उपलब्ध है। इसलिए, मैं चाहता हूं कि मेरे बंडल एससीआर पर एक आवश्यकता व्यक्त करें ताकि एक एसबीआर कार्यान्वयन को ओबीआर भंडार से हल किया जा सके।

मैं एक समाधान की कल्पना कर सकता हूं जहां मैं एक खाली बंडल बनाता हूं जो एक तरफ एक कस्टम क्षमता प्रदान करता है और दूसरी तरफ कार्यान्वयन बंडल की आवश्यकता होती है। उदाहरण के लिए:

Provide-Capability: com.example.extender; extender=scr 
Require-Bundle: org.apache.felix.scr; bundle-version=1.6.0 

घोषणात्मक सेवाओं को शामिल करने वाले किसी भी बंडल में इस क्षमता के लिए आवश्यकता व्यक्त की जा सकती है। उदाहरण के लिए:

Require-Capability: com.example.extender; filter:="(extender=scr)" 

जब मैं बंडलों कि कथात्मक सेवाओं को शामिल तैनात हल हो गई है यह सुनिश्चित करें कि एससीआर बनाने का एक अच्छा तरीका है? क्या कोई और तरीका है?

इस समस्या का एक अच्छा समाधान एक समाधान होगा जो अन्य विरासत बंडलों पर भी लागू किया जा सकता है जो क्षमताओं को प्रदान नहीं करते हैं।

उत्तर

4

spec ने osgi.extender नेमस्पेस को परिभाषित किया है लेकिन विभिन्न विस्तारक चश्मे (ब्लूप्रिंट, डीएस) को अद्यतन करने की आवश्यकता है ताकि कार्यान्वयन उचित विस्तारक क्षमता प्रदान कर सके। अभी, वे शायद नहीं करते हैं।

तो अभी के लिए, आपके डीएस बंडल को डीएस कार्यान्वयन बंडल को "आवश्यकता" करने के लिए "आवश्यकता" करने का तरीका है (या यहां तक ​​कि स्थापित)।

ओएसजीआई ब्लूप्रिंट और डीएस के अगले अपडेट के लिए प्रगति पर काम कर रहा है और ये अपडेट osgi.extender क्षमता को अनिवार्य करेंगे।

+0

तो, मैंने जो कामकाज सुझाया वह वास्तव में काम नहीं करेगा? –

+3

यह होगा। आप एक टुकड़ा भी बना सकते हैं जिसने डीएस कार्यान्वयन बंडल की क्षमता को जोड़ा। –

+0

ग्रेट, आपके उत्तर के लिए धन्यवाद! –

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