Karaf和OBR的功能有什么区别

时间:2012-01-23 19:24:40

标签: osgi apache-karaf

我正在研究部署和更新OSGI(特别是Karaf)应用程序的方法。似乎有几种选择。一种是使用OSGi Bundle Repository(OBR),另一种是使用Karaf中的Features,第三种是使用Karaf Cave

我不确定这些选项是如何真正不同的。他们似乎都在做同样的事情。它们只是相同功能的不同实现吗?有人可以解释这些差异或提供一些建议吗?

1 个答案:

答案 0 :(得分:39)

Karaf功能和OBR是解决(类似)同一问题的不同方法。两者都允许您将OSGi包安装到OSGi框架中,但是他们如何决定安装哪些包是不同的。

使用Karaf功能,您可以提供一个文件(例如feature.xml),该文件明确列出该功能的所有捆绑包的URL。它们可以存在于文件系统,maven存储库或其他任何可以通过URL描述的地方。

另一方面,OBR根据需求和功能计算出要开发的捆绑包。它将确定您安装的任何传递依赖性作为起点,并确保它们都安装完毕。通常,您需要配置一个或多个支持OBR格式的外部存储库,然后运行时的OBR解析程序将从这些存储库中配置捆绑包。所以你可以说"我需要包org.foo"或者"我需要一个OSGi服务来实现org.bar"并且供应商将决定哪种捆绑最适合您的要求。 OBR比Karaf功能更灵活,更通用,但如果您只是将一组明确定义的捆绑包安装到已经准备好所需基础架构的框架中,那么它可能会有些过分。如果构成您的应用程序的捆绑包彼此之间没有依赖关系,它也无法帮助您 - 您仍然需要将它们全部包含在您的“开始设置”中。

区别变得有点模糊,因为Karaf功能允许您在maven URL中指定版本范围,因此即使使用某个功能,您也可以在配置的内容中保持灵活性。 Karaf功能还具有与OBR的互操作性,因此您可以根据OBR要求编写功能定义文件。

我认为Karaf Cave是一个具有一些功能特征的OBR实现。所以它是服务器而不是新的技术'像功能或OBR配置。

- 企业OSGi在行动:http://www.manning.com/cummins