2015-10-04 82 views
0

我目前正在學習如何使用OSGi,並且我有一個小問題,我似乎無法向Google提供答案。在Eclipse中使用多個OSGi包

我想爲我的移動應用程序構建一個後端,並且後端將連接到多個下游節點。目前,這個後端最初只支持我的移動應用程序,但我計劃轉移我的門戶網站以使用它。

看着OSGi的是如何讓我有模塊化我的代碼到幾束,這是我的想法:

Backend 
|--- osgi-mobile 
|--- osgi-webportal 
|--- osgi-downstreamnode1 
|--- osgi-downstreamnode2 

我的問題在於使用/從一個下游節點捆綁消費服務前端包(例如,osgi-mobile使用/消耗服務,來自osgi-downstreamnode1)。

我目前正在建設他們在Eclipse火星和短包裝整個OSGi的downstreamnode1捆綁到一個JAR中,並將其導入的OSGi的移動包,我似乎無法弄清楚如何在Eclipse中引用包,以及如何在運行時調用其他包。

+0

我不明白你面對的問題。是關於提供和使用服務還是關於包裝/部署? –

+0

@ChristianSchneider我猜這是兩個都有點?提供和使用服務將在運行時發生,而打包和部署將在編譯期間發生? – Earthling

回答

-1

感謝您的幫助!

通過一些試驗和錯誤,我設法讓我通過出口型包裝選項和進口包裝通過MANIFEST.MF選擇想要的東西。我遇到了另一組使用第三方JAR的問題,但我會在一個新問題中發佈這個問題。

0

可以在OSGi中使用的服務是通過一個接口定義的。接口必須獨立於實施包: bundleA使用在bundleBase中定義的ServiceInterface的實現。現在bundleA依賴於bundleBase。然後,您可以添加實現該接口的bundeB,從而也依賴於bundleBase

通過OSGi bundleA現在可以請求服務ServiceInterface並獲得bundleeB的實例,而不存在直接依賴關係。 請參閱http://www.vogella.com/tutorials/OSGiServices/article.html

0

您需要在開發時考慮服務。 hotzst引用的教程應該有所幫助。打包的基礎是爲每個eclipse項目創建一個包。如何將它們打包在一起取決於你想要部署到哪裏。

我想你目前使用eclipse PDE視角來開發你的應用程序。我不會推薦這個。如果你知道你不開發Eclipse RCP應用程序,那麼我會考慮純Eclipse + Maven或Bndtools。我得到了很多tutorials for developing in plain eclipse and deploy into Apache Karaf。對於bndtools,請參閱their tutorials

在任何情況下,您都應該期待相當的學習曲線。所以一些書可能幫助像OSGi in practiceApache Karaf Cookbook