我正在研究部署和更新 OSGI(特别是 Karaf)应用程序的方法。似乎有几种选择。一是使用 The OSGi Bundle Repository (OBR),二是使用 Karaf 中的 Features,三是使用Karaf Cave。
我不太确定这些选项有什么不同。他们似乎都在做同样的事情。它们只是相同功能的不同实现吗?有人可以解释差异或提供一些建议吗?
我正在研究部署和更新 OSGI(特别是 Karaf)应用程序的方法。似乎有几种选择。一是使用 The OSGi Bundle Repository (OBR),二是使用 Karaf 中的 Features,三是使用Karaf Cave。
我不太确定这些选项有什么不同。他们似乎都在做同样的事情。它们只是相同功能的不同实现吗?有人可以解释差异或提供一些建议吗?
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