由Karaf FeatureService.installFeatures()覆盖的捆绑包

时间:2018-12-21 11:10:36

标签: jackson apache-karaf karaf

我们使用的是Karaf 4.1.7,在创建Karaf发行版时,我们将杰克逊核心2.9.7软件包打包在karaf系统目录中。

在我们的一个应用程序中,我们使用添加到功能中的Jackson-core 2.9.2捆绑包。当我们使用Karaf FeatureService.installFeature(featureName)安装此功能时,它会覆盖现有的2.9.7捆绑包,而不是添加新的捆绑包。我们期望两个版本都可以使用或共存。

当我键入“ list”命令时,可以看到覆盖的捆绑软件版本为2.9.2,而不是2.9.7。另一个奇怪的事情是,当我们检查bundleContext.getBundles()时,我仍然看到2.9.7 bundle。在包缓存中,我看到存在新的2.9.2 jar的version0.1文件夹。

任何人都可以提供有关如何解决此问题或我们在此处缺少的内容的指示。如果您需要更多详细信息,请告诉我们。

谢谢, Dheeraj

1 个答案:

答案 0 :(得分:0)

不同版本的两个jackson-core捆绑软件都应安装在karaf实例中,并可能得到解决。它不会被覆盖。如果调用list(默认情况下解析为bundle:list)shell命令,它将打印出OSGi起始级别等于或大于50的所有包。第一行确实显示了这一点:

karaf@root()> list
START LEVEL 100 , List Threshold: 50

因此,第一个已安装的捆绑软件可能会被跳过。通过命令行将捆绑包开始级别阈值降低为0

bundle:list -t 0

所有列出的karaf实例安装包都将列出。

关于bundleContext.getBundles()的结果:只能绑定另一个捆绑软件的一个版本,因此将为该捆绑软件(上下文)列出第一个/原始的捆绑软件捆绑软件版本。