我們想用curl替換app.war的現有部署。下面的帖子給出了一個很好的方式來部署一個戰爭文件。只要沒有使用相同名稱部署的戰爭文件,就可以很好地工作。但是,如果已經有部署,它就會失敗。有什麼辦法可以通過curl替換現有的部署嗎?通過HTTP API替換wildfly上的部署
http://blog.arungupta.me/2014/01/deploy-to-wildfly-using-curl-tech-tip-10/
有沒有辦法讓wildfly
我們想用curl替換app.war的現有部署。下面的帖子給出了一個很好的方式來部署一個戰爭文件。只要沒有使用相同名稱部署的戰爭文件,就可以很好地工作。但是,如果已經有部署,它就會失敗。有什麼辦法可以通過curl替換現有的部署嗎?通過HTTP API替換wildfly上的部署
http://blog.arungupta.me/2014/01/deploy-to-wildfly-using-curl-tech-tip-10/
有沒有辦法讓wildfly
我們寫了一個小
一些文檔shell腳本來實現這一目標:
#!/bin/bash
echo "Undeploy old war"
curl -S -H "content-Type: application/json" -d '{"operation":"undeploy", "address":[{"deployment":"old.war"}]}' --digest http://user:[email protected]:9990/management
echo ""
echo "Remove old war"
curl -S -H "content-Type: application/json" -d '{"operation":"remove", "address":[{"deployment":"old.war"}]}' --digest http://user:[email protected]:9990/management
echo ""
echo "Upload new war"
bytes_value=`curl -F "[email protected]/path/to/new.war" --digest http://user:[email protected]$hostname:9990/management/add-content | perl -pe 's/^.*"BYTES_VALUE"\s*:\s*"(.*)".*$/$1/'`
echo $bytes_value
json_string_start='{"content":[{"hash": {"BYTES_VALUE" : "'
json_string_end='"}}], "address": [{"deployment":"new.war"}], "operation":"add", "enabled":"true"}'
json_string="$json_string_start$bytes_value$json_string_end"
echo "Deploy new war"
result=`curl -S -H "Content-Type: application/json" -d "$json_string" --digest http://user:[email protected]:9990/management | perl -pe 's/^.*"outcome"\s*:\s*"(.*)".*$/$1/'`
echo $result
if [ "$result" != "success" ]; then
exit -1
fi
首先將刪除舊的WAR文件。之後,新的存檔被上傳和部署。 即使尚未部署任何內容,對我們來說也是如此。在這種情況下,前兩次調用將失敗,但新內容將被部署。
我們能夠從Wildfly Maven的插件切換到該腳本從約20到4分鐘縮短部署時間!
希望有所幫助。 乾杯
的HTTP API的完整的接口文檔,在
有看一看的全程管理模型文檔沒有可以取代部署的直接操作。部署資源
See可能的屬性/操作所以你可以做的是去除部署,如果有任何,然後再添加新的。 或者您可以使用新名稱添加新部署,禁用舊部署並啓用新部署。
有很多選擇,你可以這樣做。 對於開始我建議你通過簡單的連接到由在bin文件夾開始jboss-cli.sh|bat -c
服務器上默認實例看看的jboss-CLI 。
通過瀏覽CLI中,您還可以找到一整套屬性/操作/資源,你可以操縱這個話題
https://docs.jboss.org/author/display/WFLY8/CLI+Recipes
https://docs.jboss.org/author/display/WFLY8/Management+API+reference
很好的參考文檔(:thumbsup:thanks),但沒有具體的使用示例。 – gkephorus
非常感謝@nioe的腳本!這是一個可配置的版本,其中更好的適用於CI腳本curl
:
#!/bin/bash
# Deploys given WAR to WildFly server, pass full path to WAR as argument
set -e
set -u
[[ -f "$1" ]] || { >&2 echo "Usage: $0 WAR-filename ('$1' is not a file)"; exit 1; }
WILDFLY_MANAGEMENT_URL=http://username:[email protected]:9990
WAR_NAME=`basename $1`
WAR_PATH=`dirname $1`
echo "Deploying '$WAR_NAME' from '$WAR_PATH' to '$WILDFLY_MANAGEMENT_URL'"
echo '-------------------'
echo "-> Undeploy old war"
curl -sS -H "content-Type: application/json" -d '{"operation":"undeploy", "address":[{"deployment":"'"${WAR_NAME}"'"}]}' --digest ${WILDFLY_MANAGEMENT_URL}/management
echo ""
echo "-> Remove old war"
curl -sS -H "content-Type: application/json" -d '{"operation":"remove", "address":[{"deployment":"'"${WAR_NAME}"'"}]}' --digest ${WILDFLY_MANAGEMENT_URL}/management
echo ""
echo "-> Upload new war"
bytes_value=`curl -sF "[email protected]${WAR_PATH}/${WAR_NAME}" --digest ${WILDFLY_MANAGEMENT_URL}/management/add-content | perl -pe 's/^.*"BYTES_VALUE"\s*:\s*"(.*)".*$/$1/'`
echo $bytes_value
json_string_start='{"content":[{"hash": {"BYTES_VALUE" : "'
json_string_end='"}}], "address": [{"deployment":"'"${WAR_NAME}"'"}], "operation":"add", "enabled":"true"}'
json_string="$json_string_start$bytes_value$json_string_end"
echo "-> Deploy new war"
result=`curl -sS -H "Content-Type: application/json" -d "$json_string" --digest ${WILDFLY_MANAGEMENT_URL}/management | perl -pe 's/^.*"outcome"\s*:\s*"(.*)".*$/$1/'`
echo $result
if [ "$result" != "success" ]; then
exit -1
fi
您認爲使用此腳本會比使用.cli更快嗎?您認爲在每次部署之前重新啓動癱瘓服務器以確保重新部署正確發生會更好嗎? – Ievgen