2016-11-22 46 views
2

我打算開發一個使用Java並基於一些MVC框架的Web應用程序。這個應用程序應該支持插件。因此,我打算使用OSGI容器(apache felix)創建插件並將插件作爲服務(使用OSGI的服務註冊表功能)公開插件。如何從OSGi框架之外調用OSGi服務。

這兩個(Web應用程序和OSGI服務)都將在同一個JVM中運行。

因此,我需要幫助我如何在OSGI容器外部使用OSGI服務(插件)?

我基本上想調用OSGI以外的公開OSGI服務,在這種情況下在我的web應用程序中。

在此先感謝!

+0

題外話:我有類似的要求:用於後端模塊化的OSGi和用於前端模塊化的Eclipse E4。結果是一個允許HTML5/CSS3/JavaScript(前端)+ OSGi/Eclipse(後端)的工作(正在進行)項目:https://github.com/erdalkaraca/hi5 –

+0

爲什麼你不運行你的OSGi內部的Web應用程序? –

回答

5

爲了完成這項工作,您需要在啓動OSGi框架的類路徑中包含該服務的api包。然後您需要將此程序包導出爲系統程序包導出。這是實現服務的包和非OSGi代碼如何看到相同的服務接口類的唯一方式。

然後,您可以使用FrameworkFactory創建一個可以啓動的Framework實例。從框架中,您可以獲取BundleContext並使用它來獲取服務實例。

See embedding felix瞭解更多詳情。

+0

非常感謝!基督教 – parthiban