2012-01-23 50 views
15

我正在尋找部署和更新OSGI(Karaf,特別是)應用程序的方法。看起來有幾種選擇。一種是使用OSGi Bundle Repository(OBR),另一種是使用Karaf中的功能,第三種是使用Karaf CaveKaraf和OBR的功能有什麼區別

我不太確定這些選項如何真的不同。他們似乎都在做同樣的事情。它們是相同功能的不同實現嗎?有人能解釋一下這些差異嗎?還是提供一些建議?

回答

38

卡拉夫特徵和OBR是解決(排序)相同問題的不同方式。兩者都允許您將OSGi軟件包安裝到OSGi框架中,但他們如何決定安裝哪些軟件包是不同的。

通過Karaf功能,您可以提供一個文件(feature.xml,比如說),它明確列出了該功能的所有捆綁包的URL。他們可以生活在文件系統,或者Maven倉庫中,或者其他任何可以通過URL描述的地方。

另一方面,OBR根據需求和功能計算出什麼捆綁。它將解決你安裝的任何依賴關係作爲你的出發點,並確保它們都被安裝。通常,您需要配置一個或多個支持OBR格式的外部存儲庫,然後運行時的OBR解析器將從這些存儲庫提供捆綁包。所以你可以說「我需要package org.foo」或者「我需要一個實現org.bar的OSGi服務」,供應商將決定哪些bundle最適合你的需求。 OBR比Karaf功能更加靈活和通用,但如果您只是將一組定義良好的軟件包安裝到已經用您所需的基礎架構啓動的框架中,那麼它可能是過度的。如果構成應用程序的包不相互依賴,它也不會幫助你 - 你仍然需要將它們全部包含在「起始集」中。

由於Karaf功能允許您在maven URL中指定版本範圍,因此即使使用某個功能,您在配置的功能方面也可能會稍微靈活一些。 Karaf功能還與OBR具有互操作性,因此您可以根據OBR要求編寫功能定義文件。

我相信Karaf Cave是一個具有一些功能特徵的OBR實現。所以這是一個服務器,而不是像功能或OBR配置這樣的新技術。

- 企業OSGi的行動:http://www.manning.com/cummins

+2

自我廣告的正確方法;)很好的答案,謝謝! – Kjellski

+0

「,但如果你只是將一套定義良好的軟件包安裝到一個已經滿足你需要的基礎架構的框架中,那麼它可能是過度殺傷性的。」我用google搜索了過度殺毒軟件,它把我帶到了這篇文章中......也許有一天, 但尚未 :) – sloven

相關問題