2011-10-14 23 views
1

R-Osgi爲我們提供了一種從遠程OGSi容器調用服務的方式。網站:http://r-osgi.sourceforge.net如何使用R-Osgi獲得遠程「導出包」?

我是R-OSGi的新手,現在我想將我的OSGi容器拆分成小的,並且通過R-Osgi相互交互,因爲它太大了。但似乎R-OSGi只提供註冊服務的一種方式。我們知道,除了Service之外,兩種捆綁之間最常用的交互方式「出口包裝」也被廣泛使用。

那麼,有沒有人熟悉R-OSGi並知道如何使用遠程OSGi容器中的「exported-package」?

感謝您的回覆。

回答

2

如果你仔細想想,試圖處理遠程導入/導出包是非常複雜,脆弱和容易出錯的;您需要通過線路發送所有捆綁包生命週期事件,並在導入系統中遵守這些事件(這需要緩存)。

此外,框架需要提前知道使用這些類定義(您不能實例化引用類對於類加載器不可用的類)。遠程bundle的類加載器可能依賴於來自另一個classloader的類,這個鏈可以繞過一個網絡,使得classloading需要很長時間。

換句話說;如果沒有它們所依賴的類定義,您的本地捆綁包將永遠無法解析,並且考慮到SLA非常差的網絡/硬件上可能有成千上萬的潛在遠程出口商,考慮到fallacies of distributed computing,這不會很好地擴展或非常健壯。

如果我們試圖執行遠程軟件包,框架需要從所有可用的遠程節點導入所有導出的軟件包,然後選擇一個導入每個軟件包導出(這將是任意的,如果選擇節點關閉,整個導入遠程包過程將不得不再次觸發)。

您需要做的是將您的api/interfaces與您的實現分開,然後將api包分發給所有需要它的節點,然後使用dOSGi導入服務。

道歉,如果這不清楚或waffly,但它應該解釋爲什麼遠程導出包是不切實際的。

在附註上;我不確定r-osgi是否正在積極維護或者是最新的Remote Services Admin spec,從最近一次提交SVN中繼到14/02/2011。有一些替代的dOSGi實現列出了here(但避免CXF)。

EDIT:在部署方面,分發您束(和配置)可以從OBR進行(也有public ones數目和若干實現Felix/Eclipse)或行家庫可以與pax url handler被reappropriated。

+0

嗨earcam,我們現在重新考慮動態拆分OSGI應用程序,而無需將源代碼修改爲分佈式OSGi應用程序。不可避免的,我們需要解決遠程包,以暴露遠程客戶端包調用的服務器包。所以我的問題到現在爲止,有沒有解決方案來解決這個問題?謝謝。 – JerryCai

相關問題