Contents

JBoss 部署程式和 cli 操作小記

最近公司部署 war 檔程式
總是常常遇到 OOM(Out of Memory) 狀況
這時候有幾個部署必須要想辦法排除
這邊只記錄我排除經驗與猜測

首先,我先講我認知的部署 war 兩個方法
$JBOSS_HOME/standalone/deployment 裡面放置 war 檔案就可以部署
另一個方法是用 SE 會用一個方法部署到 JBoss 裡面
但是 $JBOSS_HOME/standalone/deployment 不會看到 war 檔

手動重新部署

假如上的 war 沒有動作

touch jboss-helloworld.war.dodeploy

可以這樣做

異常事件重新部署上到舊程式

首先,我專案用的部署 war 是 Jenkins
因為是 SE 關係,所以我沒辦法看到他設定怎麼部署
但有時候部署程式,需要手動上 war。

最近發生怪事情,就是有時候遇到 OOM , restart JBoss 會 failed
然後我把 JBoss 的 $JBOSS_HOME/standalone/config/standalone.xml
裡面 deployment tag 我上失敗 war 清掉
舊可以正常打開,但是需要重新上 war 檔

但最近不知道 SE ,他們 Jenkns 有調整?
$JBOSS_HOME/standalone/config/standalone.xml

異常事件原因

最近剛好看到 JBoss-cli 這個功能,他可以遠端(Remote)部署 war
感覺 SE 是用這個方式部署 war

首先遠端部署你的 JBoss Server 就要啟動(port 9990)

難怪之前 stop JBoss Server ,用 Jenkns 部署會失敗…

在 local 端使用 $JBOSS_HOME/bin/jboss-cli.sh
進去會看到類似 cli 指令可以輸入

connect xx.xx.xx.xx 就可以進去(沒有設定密碼,會看到 cli 介面)

這時候就可以輸入 deploy xxxx.war(local) 就可以部署 其實我還沒有機會嘗試

這邊疑問

$JBOSS_HOME/standalone/config/standalone.xml

jboss-cli deploy

部署會不會衝突? 這邊是我的猜測
然後 $JBOSS_HOME/standalone/config/standalone.xml 裡面的 deployment
可以看到 cli 部署出來 war tag

其實我還沒搞清楚熱部署是什麼
$JBOSS_HOME/standalone/deployment 其實我在懷疑這邊是不是熱部署?

為什麼正式環境改用這jboss-cli 部署呢?

jboss-cli 指令

deployment-info
NAME RUNTIME-NAME PERSISTENT ENABLED STATUS
jboss-ejb-in-ear.ear jboss-ejb-in-ear.ear false true OK
singleton_in_war.war singleton_in_war.war true true OK

其中的 PERSISTENT 並沒查到是什麼意思
目前猜測是重啟 war 是不是存在
因為 deployment 重啟 war 檔案會重新 load 檔案樣子?

嘗試過指令

查詢目前啟動 war 狀況

/deployment=*:read-attribute(name=name)

這個超像 war XPath 查詢
參考: command line interface - JBoss 7 CLI to query all the deployed applications - Stack Overflow

其他相關指令連結

OOM

進程是資源分配的最小單位,線程是CPU調度的最小單位

彩蛋

我有時間寫的話,計畫要寫 seafile docker 實作
Clementine 音樂播放器
树莓派部署 seafile 和 nextcloud 比较 - 知乎
domenukk/seafile-docker-pi: A Docker image for Seafile server - Raspberry Pi Edition


2020-10-08 額外找的