我正在研究部署和更新 OSGI(特别是 Karaf)应用程序的方法。似乎有几种选择。一是使用 OSGi Bundle Repository (OBR),二是使用 Karaf 中的 Features,三是使用卡拉夫洞穴 http://karaf.apache.org/index/subprojects/cave.html.
我不太确定这些选项有何不同。他们似乎都在做同样的事情。它们只是相同功能的不同实现吗?有人可以解释一下差异或提供一些建议吗?
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 http://www.manning.com/cummins
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)