JBoss AS 7 命令簡介
為 了便于維護和管理, JBoss AS 7 提供了命令行接口(CLI), 用戶通過豐富的命令可以達到和 Web Console 一樣的管理效果。本文嘗試對 JBoss AS 7 的 CLI 進行簡單介紹。
JBoss CLI 的作用
顯而易見,CLI 的作用在于管理。 JBoss AS 7 團隊力圖使 CLI 和 Web console 起到同樣的管理效果。CLI 使得 JBoss AS 7 的管理很容易被嵌入管理員的腳本中,針對大規模的服務器管理和與其他服務器的集成管理有很大優勢。
JBoss CLI 是怎樣工作的
JBoss AS 7 啟動的時候,會開啟 management 的兩個端口, native-interface(default port: 9999) 和 http-interface(default port: 9990), native-interface 默認是給 CLI 用的, http-interface 是給 Web console 用的。
standalone 下該配置在 standalone/configuraiton/standalone.xml 中:
<socket-binding name="management-native" interface="management" port="${jboss.management.native.port:9999}"/> <socket-binding name="management-http" interface="management" port="${jboss.management.http.port:9990}"/>
domain 下該配置在 domain/configuration/host.xml 中:
<management-interfaces> <native-interface security-realm="ManagementRealm"> <socket interface="management" port="${jboss.management.native.port:9999}"/> </native-interface> <http-interface security-realm="ManagementRealm"> <socket interface="management" port="${jboss.management.http.port:9990}"/> </http-interface> </management-interfaces>
JBoss CLI 的入口
JBoss CLI 的入口是 bin/jboss-admin.sh 腳本, 不加任何參數運行該腳本會進入 interactive mode, 用戶在console里輸入命令和 native-interface 端口進行通訊。
JBoss CLI 的實現
JBossl CLI 使用 JLine 處理控制臺的輸入,實現了諸如 Tab 自動完成, 命令歷史記錄等特性,讓那些習慣于 bash 等控制臺操作的管理員們感覺很舒服。JBoss CLI 使用 JBoss remoting 和服務器端的 controller 通訊。如果是 standalone mode, controller 是單個的 host controoler,如果是 domain mode, controoler 就是 domain controller。交互的數據格式是基于 JBoss remoting 的自定義協議,與其不同的是 Web Console 下與 management-http 端口通訊的是基于 JSON 格式的 base64編碼。
JBoss CLI 的特性
JBoss CLI 有三個特性需要說下,一是 interactive mode 下支持 tab 自動完成, 二是有些命令只有在服務器連接以后才有用,有些則在 standalone 和 domain 下不同。三是可以自定義新的命令。如果想看某個命令的詳細說明, 運行: command --help 。
JBoss CLI 的參數
腳本 bin/jboss-admin.sh 有一些參數:
./jboss-admin.sh --version # 打印版本信息。 除 JBoss AS release 的信息以外,都是 CLI 所在的機器的信息。 ./jboss-admin.sh --controller=host:port # 指定 CLI 連接的目標 controller。 該設定并沒有啟動連接, 只有調用 connect 命令或者 --connect 參數才會啟動連接 ./jboss-admin.sh --file=FILE # 讀取 FILE 里的命令列表,逐個執行。 每個命令一行。 運行完后,退出 ./jboss-admin.sh --command COMMAND # 執行 --command 后面的 COMMAND, 并且退出。 “--command” 可以省略。 ./jboss-admin.sh --commands COMMAND1,COMMAND2... # 執行 --commands 后面的命令列表, 以逗號分開。運行完成后退出。“--commands” 可以省略。 ./jboss-admin.sh --user=username --password=password # 指定需要 authentication 的用戶名和密碼。 ./jboss-admin.sh --connect --gui # 啟動 GUI 進行可視化 command builder # --gui 在 7.1.0.Final 會出現
JBoss CLI 常用命令
下面列出的一些 command 都是基于 jboss-as-7.1.0.CR1b 版本, 以后有可能會有增加或者修改。
1 connect
connect 命令用于連接目標 controller。
用法如下:
connect [host]:[port] # 連接 host:port 端口, 默認為連接 localhost:9999。 這個是在 interactive mode 下輸入的命令。 ./jboss-admin.sh --connect # 啟動控制臺的時候自動連接 localhost:9999 ./jboss-admin.sh --connect --controller=host:port # 啟動控制臺的時候自動連接 host:port ./jboss-admin.sh --connect --controller=host:port --user=<username> --password=<password> # 啟動控制臺的時候自動連接 host:port, 并且使用 username 和 password 進行 。
2 clear
clear 用于清屏。cls 是它的一個 alias。 與 linux 下的 clear 一樣。
3 help
非常有用的命令。運行 command --help 來查看詳細解釋
4 history
列出已經運行過的命令歷史記錄。 存放在 USER_HOME/.jboss-cli-history 文件。
5 version
打印出版本信息
6 pwd
打印當前所在 node 的路徑信息。
7 batch
進入 batch mode。 batch mode 是將一些命令在一個事務下運行。 batch 的定義也可以放在一個文件里,由 ./jboss-admin.sh --file=FILE 執行。有關 batch mode 的具體用法, 請參照: http://community.jboss.org/wiki/CLIBatchMode
8 quit
退出
9. cd node_path【connect 后有效】
改變當前 node 的路徑。 "cd .." 會更改到上一層。
10 ls 【connect 后有效】
列出當前 node 下的子路經
11 deploy file_path 【connect 后有效】
部署一個文件到目標 host。
[standalone@192.168.1.102:9999 /] deploy /home/lgao/sources/my_own/maven_webapp/myapp/target/myapp.war # 部署一個 war, 同時啟動 [standalone@192.168.1.102:9999 /] deploy -l myapp.war # 列出已部署的應用 [standalone@192.168.1.102:9999 /] undeploy myapp.war # 卸載 myapp.war [standalone@192.168.1.102:9999 /] deploy /home/lgao/sources/my_own/maven_webapp/myapp/target/myapp.war --disabled # 部署一個 war, 但是不啟動它 [standalone@192.168.1.102:9999 /] deploy -l myapp.war [standalone@192.168.1.102:9999 /] deploy --name myapp.war # 僅僅啟動 myapp.war
CLI 會把 myapp.war 上傳到目標 host中進行部署。
deploy -l 會列出當前的部署列表。(如果同時能列出每個部署的狀態就更好了。)
12 undeploy deployname 【connect 后有效】
卸載一個部署。 deployname 是 deploy -l 列出的 name
13 command add --node-type=xx --property-id=xx --command-name=CmdName 【connect 后有效】
定義一個命令,使得該命令對指定 node-type 的某個 node 對應的實例進行操作。JBoss CLI 內置了2 個 自定義命令: data-source, xa-data-source. 其中 data-source 的定義是:
command add --node-type=/subsystem=datasources/data-source --property-id=jndi-name --command-name=data-source
我們來自定義一個 connector 的命令:
[standalone@localhost:9999 /] command add --node-type=/subsystem=web/connector --propertiy-id=name --command-name=connector
然后我們就可以使用 connector 命令了:
[standalone@localhost:9999 /] connector --name=http read-resource enable-lookups=false enabled=true max-post-size=2097152 max-save-post-size=4096 protocol=HTTP/1.1 redirect-port=8443 scheme=http secure=false socket-binding=http ssl=n/a virtual-server=n/a
每個新添加的自定義命令都會有 --help 參數, JBoss CLI 會讀取服務器端支持的 operation 和 attribute, 組合成幫助文檔顯示出來。
除了以上的命令以外, 還可以通過 /node-type=node-name:operation 的方式進行調用。比如:
[standalone@localhost:9999 /] /subsystem=naming:read-resource-description { "outcome" => "success", "result" => { "description" => "The configuration of the naming subsystem.", "attributes" => {}, "operations" => undefined, "children" => {"binding" => { "description" => "JNDI bindings for primitive types", "model-description" => undefined }} } }
在根 node 下有個 operation 用來關閉 JBoss:
[standalone@localhost:9999 /] :shutdown {"outcome" => "success"} [standalone@localhost:9999 /]
目前還沒有命令遠程 restart JBoss, 只能是 ssh 到 host下,調用相應的 standalone.sh 或者 domain.sh。 希望下個 release 會考慮 restart 命令。
轉自:http://jbosscn.iteye.com/blog/1350214