Karaf和OBR的功能有什么区别

Ole*_*ksi 15 osgi apache-karaf

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

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

Hol*_*ins 39

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

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

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

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

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

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

  • 自我宣传正确的方式;)好的答案,谢谢! (2认同)