0

我想連續部署一個功能到基於Karaf 3.0.4的ServiceMix 6.0。如何連續部署功能到卡拉夫?

我第一次嘗試使用karaf控制檯。但是有一些問題。對於標準karaf安裝,無法確定karaf console是否已安裝功能(請參閱我的other question)。卡拉夫控制檯的另一個問題是它不支持退出代碼。因此,無法可靠地確定功能安裝是否成功完成。

我然後installed hawtio並試圖經由椒/捆綁與hawtio REST使用暴露的JMX豆。這裏的問題是karaf 3.0.x是unable to update a feature。因此必須先卸載功能。但是FeatureService只能提供卸載顯式指定功能的可能性。但是,如果安裝了該功能的先前版本,則會隨之安裝子功能。他們還需要升級並因此首先被卸載。所以我需要一種方法來迭代我沒有的功能的子功能。

那麼如何連續部署karaf 3.0.x的特性呢?

回答

1

我們已經實現的第一個嘗試是bash腳本。最大的問題是卸載舊版本。因此,我們爲該功能的名稱及其子功能設置了一個約定。因此,我們可以使用下面的方法找到已安裝的功能:

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

這可以被傳遞到feature:uninstall,也可用於如果功能被調用feature:repo-add -i之後安裝檢測。

剩下的問題是我們無法引用第三方子功能,因爲當需要安裝更新的版本時,它們不會被卸載,並且我們無法確定是否所有子功能都已成功安裝。

0

對於karaf 3,沒有好方法來更新功能。

這已經爲karaf 4.好一點它允許更新要素回購,你可以簡單地再重新安裝該功能。它會檢測到該功能已更改,並在捆綁中進行必要的更改。