如何将功能部署到karaf?

时间:2015-08-20 12:08:41

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

我想继续为ServiceMix 6.0部署一个基于Karaf 3.0.4的功能。

我首先尝试使用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?

2 个答案:

答案 0 :(得分: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后是否安装了功能。

剩下的问题是我们无法引用第三方子功能,因为当需要安装更新版本时我们无法卸载它们,并且我们无法确定是否已成功安装所有子功能。 / p>

答案 1 :(得分:0)

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

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