在Apache Karaf中更新包裹的罐子的正确方法是什么?



我创建了一个osgi束A和一个jar b,a取决于B。我还成功地在KARAF 4.1.1上部署了A和B。b被部署为包裹的maven jar(捆绑:install -s mvn:....(。

现在B有一些更改,因此我将其重新部署到了我们的Nexus服务器中,我也想将新B部署到Karaf中。

但是我发现,如果我只在卡拉夫中更新B,则A仍在使用旧B,甚至我都重新启动A。我必须卸载并重新安装B才能使用新的b。

由于B是一个普通的库,因此将有许多其他捆绑包取决于B。和B也由我们的其他非OSGI应用程序使用,因此我不想将其作为OSGI捆绑。

是更新卡拉夫包装罐的正确方法吗?或任何建议?

问题与"包装组件"无关。使用包裹协议安装后,将JAR视为普通的OSGI捆绑包。

但是,请记住,卡拉夫手表仅从快照捆绑包

so:

  • 在您的开发环境中,捆绑b可能位于快照版本中。因此,您可以立即观看更改(只需确保在KARAF命令行中击中捆绑包:观看 *(。捆绑A检测B的更改也立即变化。

  • 在您的生产环境中,Bundle B必须在发布版本中。因此,要在B中部署新更改,您必须安装新版本并删除旧版本。

    如果要让B部署两个不同的版本,并强迫A使用新版本,则必须通过修改这样的导入包来对捆绑包进行一些更改:

    ...
    bundle_B_package*;version="[bundle_B_new_version,bundle_B_new_version + 1)",
    ...
    

在这里我们应用语义版本:(

相关内容

最新更新