【问题标题】:How to continously deploy a feature to karaf?如何持续向 karaf 部署功能?
【发布时间】:2015-11-14 01:47:17
【问题描述】:

我想持续向基于 Karaf 3.0.4 的 ServiceMix 6.0 部署一项功能。

我首先使用 karaf 控制台进行了尝试。但是也有一些问题。对于标准 karaf 安装,无法在 karaf console 上确定是否已经安装了某个功能(请参阅我的 other question)。 karaf 控制台的另一个问题是它不支持退出代码。因此,无法可靠地确定功能安装是否成功完成。

然后我 installed hawtio 并尝试通过与 hawtio 捆绑的 jolokia/REST 使用暴露的 JMX bean。这里的问题是 karaf 3.0.x 是unable to update a feature。因此必须先卸载功能。但是,FeatureService 仅提供卸载明确指定功能的可能性。但是,当安装了该功能的先前版本时,会同时安装子功能。它们还需要升级,因此首先要卸载。所以我需要一种方法来迭代一个功能的子功能,而我没有。

那么如何将功能持续部署到 karaf 3.0.x 呢?

【问题讨论】:

    标签: deployment osgi continuous-deployment apache-karaf apache-servicemix


    【解决方案1】:

    我们实现的第一个尝试是 bash 脚本。最大的问题是卸载旧版本。因此,我们为功能及其子功能的名称设置了约定。因此我们可以使用以下内容来查找已安装的功能:

    features=$(echo "feature:list" | ssh -p $smx_ssh_port $smx_user@$smx_host | grep -h "<feature-name-convention-regex>.*|.*x.*|" | cut -f1 -d" " | tr '\n' ' ')
    

    然后可以将其传递给feature:uninstall,也可以用于检测在调用feature:repo-add -i 后是否安装了功能。

    剩下的问题是我们无法引用第 3 方子功能,因为在需要安装更新版本时它们不会被卸载,而且我们无法确定是否所有子功能都已成功安装。

    【讨论】:

      【解决方案2】:

      对于 karaf 3,没有更新功能的好方法。

      这对于 karaf 4 来说已经好一点了。它允许更新功能存储库,然后您可以简单地再次安装该功能。它将检测到功能已更改并在捆绑包中进行必要的更改。

      【讨论】:

        猜你喜欢
        • 2016-06-21
        • 2015-12-27
        • 2019-04-29
        • 2019-05-22
        • 1970-01-01
        • 2014-01-08
        • 1970-01-01
        • 2018-07-24
        • 2015-04-20
        相关资源
        最近更新 更多