JBoss AS 7 命令簡介

jopen 12年前發布 | 2K 次閱讀 軟件研發,項目管理,開源

了便于維護和管理, 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>

NOTE
配置文件中的 ${jboss.management.native.port:9999} 意味著如果有 jboss.management.native.port 系統變量存在,那么就使用該變量的值,否則使用9999。變量通過 -D 傳入。

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

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!