Karaf 包加载优先级

Karaf bundle load precedence

我对 karaf 和功能加载有疑问。我有一个 kar 文件,其中包含我的所有应用程序包。它在 PROD 环境中发布。它是基于版本 4.0.4 的自定义构建离线 Karaf - 并且 KAR 文件位于部署文件夹中。我想制作一个补丁来覆盖一个或多个相同的包。由于某些政策,没有发布新版本 kar 的选项。我的问题是:

  1. 引用特定版本捆绑包的功能文件。如果我将它们放在相同版本的 /deploy 中,将使用 JAR,还是不确定的?
  2. 当我将更新版本(次要版本更改)的捆绑包放入 /deploy 时,它是使用的还是特定功能定义的版本?或者行为可能是不确定的?
  3. 当 1 或 2 没有确定性解决方案时,是否还有其他解决方案?

1a。功能文件中引用的包将从可用的存储库(通常是 Maven 存储库)加载。 deploy/ 文件夹不是存储库。 deploy/ 文件夹中的任何内容都会立即加载。

1b。如果已经加载了具有匹配符号名称+版本的包,如果功能文件指定了它,Karaf 将不会加载第二个版本。将要加载的功能和包的功能定义视为 "load this if its not already present"

  1. 如果是第二个文件,它将作为第二个包部署。可以说捆绑包的唯一 "key" 是基于 MANIFEST.MF.

  2. 中的值的符号名称 + 版本
  3. n/a。它是确定性的。