【发布时间】:2018-05-30 13:45:05
【问题描述】:
我的 karaf 服务器遇到了一个恼人的行为:标题说明了一切,当我使用以下功能时,已安装的捆绑包会重新启动:安装命令。
* 项目上下文 *
我处理的大部分bundle都是骆驼路由,其他的都是常用工具,路由共享。
-
因此,我有一个 2 级项目:首先安装的公共部分,以及所有依赖于公共部分的骆驼路线(取决于 Maven 的观点)。
* 场景 *
- 开始一个新的 karaf 实例
- 安装常用功能
- 安装骆驼路线功能:目前没有问题
- 安装第二个骆驼路线功能:之前安装的功能中的捆绑包将重新启动。
*取得突破*
所有包都声明了一个通用配置文件,带有选项“update-strategy=reload”。这意味着 karaf 会通知每个包对该文件的任何修改,并且该包将重新启动以将其考虑在内。
事实上,当我安装一个依赖于这个文件的新包时,会读取它以初始化包的属性,并且 karaf 认为它是文件修改。因此,安装一个新的捆绑包会导致所有其他捆绑包重新启动。
如您所料,我通过删除 update-strategy 选项解决了这个问题,并且我的大部分功能现在都很干净。
* 剩菜 *
但是,其中一些仍然存在错误:安装任何这些麻烦的功能都会重新启动所有其他已安装的功能。这是一个单向问题,安装干净的捆绑包不会让麻烦的重新启动。
我还是检查了,但没有其他配置文件可以对此负责。
任何帮助或建议将不胜感激,我还可以提供任何有助于您理解的文件的匿名示例,例如 osgi-context 或功能的 pom.xml
最后一件事:我的功能重新组合了大约 50 个包,因此我几乎无法理解 karaf 日志,而且我无法确定哪个包首先重新启动。
感谢您的时间和关注!
【问题讨论】:
标签: apache-camel osgi karaf blueprint