Karaf和OBR中的特性有什么区别?

16

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

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

1个回答

40
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过度设计并找到了这篇文章...也许有一天会用到,但现在还不需要 :) - niken

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接