Apache camel Karaf:功能:安装重新启动以前的捆绑包

Apache camel Karaf:功能:安装重新启动以前的捆绑包,apache-camel,osgi,karaf,blueprint,Apache Camel,Osgi,Karaf,Blueprint,我正面临来自karaf服务器的一个恼人的行为:标题说明了一切,当我使用一个feature:install命令时,已安装的bundle会重新启动 *项目背景* 我处理的大多数bundle是camel路由,其他bundle是路由共享的常用工具 因此,我有一个2级项目:首先安装一个公共部分,驼峰路线完全取决于公共部分(取决于Maven的观点) *场景* 启动一个新的karaf实例 安装常见功能 安装驼峰路线功能:到目前为止没有问题 安装第二个驼峰路由功能:以前安装的功能中的捆绑包将重新启动 *

我正面临来自karaf服务器的一个恼人的行为:标题说明了一切,当我使用一个feature:install命令时,已安装的bundle会重新启动

*项目背景*

  • 我处理的大多数bundle是camel路由,其他bundle是路由共享的常用工具

  • 因此,我有一个2级项目:首先安装一个公共部分,驼峰路线完全取决于公共部分(取决于Maven的观点)

*场景*

  • 启动一个新的karaf实例
  • 安装常见功能
  • 安装驼峰路线功能:到目前为止没有问题
  • 安装第二个驼峰路由功能:以前安装的功能中的捆绑包将重新启动
*取得突破*

所有bundle都声明了一个公共配置文件,带有选项“updatestrategy=reload”。这意味着karaf将通知每个捆绑包对此文件的任何修改,并且捆绑包将重新启动以将其考虑在内

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

正如您所期望的,我通过删除更新策略选项来解决这个问题,我的大部分功能现在都是干净的

*剩菜*

但是,其中一些仍然存在缺陷:安装任何这些麻烦的功能都会重新启动所有其他已安装的功能。这是一个单向问题,安装干净的捆绑包不会让麻烦的捆绑包重新启动

我已经检查过了,但是没有其他配置文件可以对此负责

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

最后一件事:我的特性将每个包重新组合大约50个包,因此我几乎无法理解karaf日志,也无法确定先重新启动哪个包


谢谢你的时间和关注

我认为你所描述的有一些误解

更新策略=重新加载不会导致包重新加载。它会导致重新加载蓝图上下文

您也不应该在捆绑包之间共享某些配置,因为它会扰乱您的部署

捆绑包可能重新启动还有其他原因。karaf功能安装尝试提供karaf中总体所需的最佳捆绑包集,以满足当前安装的功能集。 典型的情况是,首先使用包含可选软件包导入的捆绑包安装该功能。目前它无法提供该包。然后安装第二个功能,提供包的导出器。现在,bundle的可选依赖关系可以得到满足,并且将由karaf重新启动bundle。
您可以使用特性install-v来研究这种情况。这将向您显示哪些捆绑包被重新启动,以及重新启动的原因。因此,也许这可以帮助您调试重新启动的原因

这似乎很有希望!我将查看-v输出,看看重新启动的捆绑包是否是导入/导出机制的结果。对于这些记录,共享配置是我的客户机要求的,我不能这样做^^