Karaf 和 OBR 中的功能有啥区别

Posted

技术标签:

【中文标题】Karaf 和 OBR 中的功能有啥区别【英文标题】:What's the difference between features in Karaf and OBRKaraf 和 OBR 中的功能有什么区别 【发布时间】:2012-02-17 03:24:11 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

Karaf 功能和 OBR 是解决(某种)相同问题的不同方法。两者都允许您将 OSGi 包安装到 OSGi 框架中,但它们决定安装哪些包的方式不同。

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

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

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

我相信 Karaf Cave 是一个具有一些特性的 OBR 实现。所以它是一个服务器,而不是像功能或 OBR 配置这样的新“技术”。

-- 企业 OSGi 实战:http://www.manning.com/cummins

【讨论】:

“但如果你只是将一组定义明确的捆绑包安装到一个已经准备好你需要的基础设施的框架中,这可能是矫枉过正”我搜索了 obr 矫枉过正,它把我带到了这个文章...也许有一天,但还没有:)

以上是关于Karaf 和 OBR 中的功能有啥区别的主要内容,如果未能解决你的问题,请参考以下文章

Solidity 中的内部/外部和公共/私人功能有啥区别?

magrittr 中的 %>% 和 %,% 有啥区别?

Javascript中的parseInt(x)和+(x)有啥区别[重复]

TeamCity 中的快照依赖和完成构建触发器有啥区别?

numpy中的flatten和ravel有啥区别? [复制]

PHP中的die()和exit()有啥区别?