2012-06-05 140 views
0

我正在設計一個shell來管理應用程序。計劃讓下一個應用程序版本使用OSGi,但OSGi平臺(Felix,Equinox,...)尚未確定。如果我們也可以用我們的shell來管理OSGi,那將會很好。獨立於平臺的OSGi控制檯

如何以獨立於平臺的方式管理OSGi?你能指點我的例子代碼?

謝謝,烏爾裏希

回答

0

是的,當然也可能給予的OSGi在獨立於平臺的方式。 這一切都取決於您準備實施自己的多少行政管理。

OSGi的API,您可以訪問任何東西,你只需要設計/選擇你的shell,命令等的格式

你想基於一個命令提示符下,一個基於網絡的一個或一個遙控器管理協議與一些後端管理服務器一起使用?

1)讓我們從功能開始。 你的shell將作爲一個bundle本身來實現。您可以使用此捆綁包的BundleContext來訪問其他捆綁對象。 通過他們,您可以:

  • 安裝,啓動,停止,更新包:

BundleContext.installBundle(String) - 安裝在指定位置 串束(這應該是一個URL)。

BundleContext.getBundles() 
Bundle.start() 
Bundle.update(InputStream input) 
  • 檢查捆綁,捆綁的版本,出口/進口產品,註冊的服務

  • 從OSGi服務註冊表就可以得到ConfigurationAdmin服務,通過它你可以列出包的配置,並改變它們

  • 從註冊表,你還可以得到LogService,讀取日誌

  • 從STARTLEVEL服務時,FW開始

可以控制束的出發順序等等等等

2)您想如何使上述信息訪問? 如果你想要一個基於命令的控制檯,你可以使用系統輸出編寫一個控制檯。 You can check this implementation for ideas

如果你想要一個基於web的平臺獨立的最簡單的方法是編寫一個標準的servlet並將其註冊到標準的OSGi HTTP服務中。然後相關的網頁將調用上述功能。

如果你想要一個遠程管理協議,你可以映射到許多不同的可能性。例如,檢查映射到OMA DM規範的OSGi DMT服務,該規範可輕鬆映射到TR-069管理協議。有現有的實現。

所有這些都完全獨立於Felix,Equinox等,並且可以在任何OSGi fw上運行。

1

事實上,你不能只使用卡拉夫的控制檯。您可以簡單地使用Apache Karaf作爲您的服務器。只需配置設置,即可從Felix切換到Equinox。我做了一個關於卡拉夫的系列教程,如果你對它在實踐中如何工作感興趣的話。 http://www.liquid-reality.de/display/liquid/Karaf+Tutorials