是否需要導出包含OSGI服務的包才能發佈到服務註冊表?或者發佈到服務註冊表是否需要導出包?已發佈的OSGI服務是否需要導出其包?
1
A
回答
3
簡答題;第一個問題=否,第二個問題=否,沒有「解決方法」
「合同設計」原則發揮作用。基本上我們提供了一個消費者依賴和提供者實現的接口 - 這將我們的消費者代碼分解爲我們實現者的實現細節。請參閱http://www.osgi.org/blog/2011/08/package-as-contract.html以獲得良好的概述,並參閱http://en.wikipedia.org/wiki/Design_by_contract。
考慮到我們希望使用的接口(API)和實現(API接口的具體實現)以及消費者(希望使用接口實現的代碼),對於OSGi,您有許多選項。
- 一個包可以同時提供接口和實現,但如果此服務被捆綁本身
- 具有接口(其中出口)一個獨立的包和其他的外部使用,必須導出界面(s) - 實現bundle必須導入接口的包,但不需要顯示他們自己的實現。
號2的優點包括允許多個提供商(OSGi的使用可被用來指定在註冊的服務的屬性的元數據匹配的LDAP過濾器),並利用OSGi的的動態結合性質(即可以改變實施運行時提供者)。
需要注意的一點是,使用者和提供者必須使用與包版本和導出包所定義的相同的類(換句話說,加載API類的包類加載器對於消費者而言必須是相同的和提供者)。
1
服務的類型應該在導出的包中。服務是鍵入的,並建立在模塊層的類型共享上。所以你需要確保服務的提供者和服務的使用者都可以共享相同的類型。所以一些bundle必須導出包含該類型的包,以便提供者和消費者可以導入該包。這允許框架驗證服務的類型安全性。
相關問題
- 1. OSGi片段包是否可以發佈聲明式服務?
- 2. 是否服務包需要在升級
- 3. SOAP Web服務:您是否需要WSDL發佈頁面?
- 4. 使TFS包含發佈版本中的已發佈WCF服務
- 5. 是否需要綁定到已啓動的本地服務?
- 6. 需要OSGi伴隨包嗎?
- 7. 將Spring組件導出爲OSGi服務
- 8. 將sqljdbc4導出爲OSGi服務
- 9. 我是否需要發佈xib資源?
- 10. 您是否需要發佈@property?
- 11. ajax是否需要Web服務?
- 12. Apache Cordova是否需要服務器?
- 13. 'node.js':是否需要運行服務器?
- 14. Web服務是否需要註冊?
- 15. JSONP是否需要修改服務器?
- 16. 我是否也需要服務層?
- 17. React.js是否需要服務器端?
- 18. OSGi服務包裝罐
- 19. 找到導出包的OSGI包?
- 20. Kinect SDK是否已發佈?
- 21. Android:是否需要包含Google Play服務才能使用GCM?
- 22. 是否需要禁用日誌輸出發佈構建
- 23. 當使用其他包的服務接口時,OSGI包需要jdbc驅動程序
- 24. OSGI捆綁服務消費者是否需要創建服務接口的「存根」?
- 25. DataCacheException發佈包雲服務
- 26. 導入需要其他包的模塊
- 27. 我是否需要將令牌發送到服務器
- 28. 引用已發佈的WCF服務
- 29. 聽衆服務是否需要安裝Oracle服務器?
- 30. SIPS服務器是否需要RADIUS服務器?