ओएसजीआई एंटरप्राइज़ रिलीज 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)"
जब मैं बंडलों कि कथात्मक सेवाओं को शामिल तैनात हल हो गई है यह सुनिश्चित करें कि एससीआर बनाने का एक अच्छा तरीका है? क्या कोई और तरीका है?
इस समस्या का एक अच्छा समाधान एक समाधान होगा जो अन्य विरासत बंडलों पर भी लागू किया जा सकता है जो क्षमताओं को प्रदान नहीं करते हैं।
तो, मैंने जो कामकाज सुझाया वह वास्तव में काम नहीं करेगा? –
यह होगा। आप एक टुकड़ा भी बना सकते हैं जिसने डीएस कार्यान्वयन बंडल की क्षमता को जोड़ा। –
ग्रेट, आपके उत्तर के लिए धन्यवाद! –