Karaf : feature:install 重新启动以前的包

Karaf : feature:install restarts previous bundles

我的 karaf 服务器出现了一个恼人的行为:标题说明了一切,当我使用以下功能时,已安装的捆绑软件会重新启动:安装命令。

* 项目背景 *

* 场景 *

* 取得突破 *

所有的包都声明了一个通用的配置文件,带有选项"update-strategy=reload"。这意味着 karaf 会通知每个 bundle 这个文件的任何修改,bundle 会重新启动以考虑到它。

事实上,当我安装一个依赖于这个文件的新bundle时,它会被读取以初始化bundle的属性,karaf认为这是一个文件修改。因此,安装新的捆绑包会使所有其他捆绑包重新启动。

如您所料,我通过删除 update-strategy 选项解决了这个问题,现在我的大部分功能都干净了。

* 剩菜 *

但是,其中一些仍然存在错误:安装任何这些麻烦的功能都会重新启动所有其他已安装的功能。这是一个 ONE-WAY 问题,安装一个干净的包不会有麻烦的重新启动。

我还是检查了一下,但没有其他配置文件对此负责。

如有任何帮助或建议,我将不胜感激,我还可以提供任何有助于您理解的文件的匿名示例,例如 osgi-context 或功能的 pom.xml

最后一件事:我的功能重新组合了大约 50 个包,因此我几乎无法理解 karaf 日志,而且我无法确定首先重新启动了哪个包。

感谢您的时间和关注!

我认为你描述的内容存在一些误解。

update-strategy=reload 不会导致包重新加载。它会导致重新加载蓝图上下文。

你也不应该在 bundle 之间共享一些配置,因为它会扰乱你的部署。

捆绑包可能会重新启动还有其他原因。 karaf 功能安装尝试提供 karaf 整体所需的最佳捆绑包集,以满足当前安装的功能集。 一个典型的情况是,您首先使用包含可选包导入的包安装功能。目前无法提供包裹。然后安装第二个功能,提供包的导出器。现在可以满足 bundle 的可选依赖关系,并且 bundle 将由 karaf 重新启动。 您可以使用 feature:install -v 来调查此类情况。这将向您显示哪些包已重新启动以及原因。所以也许这可以帮助您调试重启发生的原因。