JBoss CLI

轉自http://www.cnblogs.com/inteliot/archive/2012/08/05/2623719.htmljavascript

 

爲 了便於維護和管理, JBoss AS 7 提供了命令行接口(CLI), 用戶經過豐富的命令能夠達到和 Web Console 同樣的管理效果。本文嘗試對 JBoss AS 7 的 CLI 進行簡單介紹。 html

   JBoss CLI 的做用

   顯而易見,CLI 的做用在於管理。 JBoss AS 7 團隊力圖使 CLI 和 Web console 起到一樣的管理效果。CLI 使得 JBoss AS 7 的管理很容易被嵌入管理員的腳本中,針對大規模的服務器管理和與其餘服務器的集成管理有很大優點。 java

  JBoss CLI 是怎樣工做的

  JBoss AS 7 啓動的時候,會開啓 management 的兩個端口, native-interface(default port: 9999) 和 http-interface(default port: 9990), native-interface 默認是給 CLI 用的, http-interface 是給 Web console 用的。node

standalone 下該配置在 standalone/configuraiton/standalone.xml 中:linux

Xml代碼    收藏代碼
  1. <socket-binding name="management-native"  interface="management"  port="${jboss.management.native.port:9999}"/>  
  2. <socket-binding name="management-http" interface="management" port="${jboss.management.http.port:9990}"/>  

 domain 下該配置在 domain/configuration/host.xml 中:web

Xml代碼    收藏代碼
  1. <management-interfaces>  
  2.     <native-interface security-realm="ManagementRealm">  
  3.         <socket interface="management" port="${jboss.management.native.port:9999}"/>  
  4.     </native-interface>  
  5.     <http-interface security-realm="ManagementRealm">  
  6.         <socket interface="management" port="${jboss.management.http.port:9990}"/>  
  7.     </http-interface>  
  8. </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 端口進行通信。 bash

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 。 app

JBoss CLI 的參數 

腳本 bin/jboss-admin.sh 有一些參數: dom

Shell代碼    收藏代碼
  1. ./jboss-admin.sh --version  
  2. # 打印版本信息。 除 JBoss AS release 的信息之外,都是 CLI 所在的機器的信息。  
  3.   
  4. ./jboss-admin.sh --controller=host:port   
  5.   # 指定 CLI 鏈接的目標 controller。 該設定並無啓動鏈接, 只有調用 connect 命令或者 --connect 參數纔會啓動鏈接  
  6.   
  7. ./jboss-admin.sh --file=FILE  
  8.   # 讀取 FILE 裏的命令列表,逐個執行。 每一個命令一行。 運行完後,退出  
  9.   
  10. ./jboss-admin.sh --command COMMAND  
  11.   # 執行 --command 後面的 COMMAND, 而且退出。 「--command」  能夠省略。  
  12.   
  13. ./jboss-admin.sh --commands COMMAND1,COMMAND2...  
  14.   # 執行 --commands 後面的命令列表, 以逗號分開。運行完成後退出。「--commands」 能夠省略。  
  15.   
  16. ./jboss-admin.sh --user=username --password=password  
  17.   # 指定須要 authentication 的用戶名和密碼。  
  18.   
  19. ./jboss-admin.sh --connect --gui  
  20.   # 啓動 GUI 進行可視化 command builder   
  21.   # --gui 在 7.1.0.Final 會出現   

JBoss CLI 經常使用命令  

 下面列出的一些 command 都是基於 jboss-as-7.1.0.CR1b 版本, 之後有可能會有增長或者修改。

1 connect

 connect 命令用於鏈接目標 controller。

 用法以下:

Shell代碼    收藏代碼
  1. connect [host]:[port]  
  2. # 鏈接 host:port 端口, 默認爲鏈接 localhost:9999。 這個是在 interactive mode 下輸入的命令。  
  3. ./jboss-admin.sh --connect  
  4. # 啓動控制檯的時候自動鏈接 localhost:9999  
  5. ./jboss-admin.sh --connect --controller=host:port  
  6. # 啓動控制檯的時候自動鏈接 host:port   
  7. ./jboss-admin.sh --connect --controller=host:port --user=<username> --password=<password>  
  8. # 啓動控制檯的時候自動鏈接 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。 

Shell代碼    收藏代碼
  1. [standalone@192.168.1.102:9999 /] deploy /home/lgao/sources/my_own/maven_webapp/myapp/target/myapp.war  
  2.   # 部署一個 war, 同時啓動  
  3. [standalone@192.168.1.102:9999 /] deploy -l  
  4. myapp.war  
  5.   # 列出已部署的應用  
  6. [standalone@192.168.1.102:9999 /] undeploy myapp.war  
  7.   # 卸載 myapp.war  
  8. [standalone@192.168.1.102:9999 /] deploy /home/lgao/sources/my_own/maven_webapp/myapp/target/myapp.war  --disabled  
  9.   # 部署一個 war, 可是不啓動它  
  10. [standalone@192.168.1.102:9999 /] deploy -l  
  11. myapp.war  
  12. [standalone@192.168.1.102:9999 /] deploy --name myapp.war  
  13.   # 僅僅啓動 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 的定義是:

Shell代碼    收藏代碼
  1. command add --node-type=/subsystem=datasources/data-source --property-id=jndi-name --command-name=data-source   

   咱們來自定義一個 connector 的命令: 

Shell代碼    收藏代碼
  1. [standalone@localhost:9999 /] command add --node-type=/subsystem=web/connector --propertiy-id=name --command-name=connector   

   而後咱們就能夠使用 connector 命令了: 

Shell代碼    收藏代碼
  1. [standalone@localhost:9999 /] connector --name=http read-resource  
  2. enable-lookups=false  
  3. enabled=true  
  4. max-post-size=2097152  
  5. max-save-post-size=4096  
  6. protocol=HTTP/1.1  
  7. redirect-port=8443  
  8. scheme=http  
  9. secure=false  
  10. socket-binding=http  
  11. ssl=n/a  
  12. virtual-server=n/a   

    每一個新添加的自定義命令都會有 --help  參數, JBoss CLI 會讀取服務器端支持的 operation 和 attribute, 組合成幫助文檔顯示出來。 

 除了以上的命令之外, 還能夠經過 /node-type=node-name:operation 的方式進行調用。好比: 

Shell代碼    收藏代碼
  1. [standalone@localhost:9999 /] /subsystem=naming:read-resource-description  
  2. {  
  3. "outcome" => "success",  
  4. "result" => {  
  5. "description" => "The configuration of the naming subsystem.",  
  6. "attributes" => {},  
  7. "operations" => undefined,  
  8. "children" => {"binding" => {  
  9. "description" => "JNDI bindings for primitive types",  
  10. "model-description" => undefined  
  11. }}  
  12. }  
  13. }   

    在根 node 下有個 operation 用來關閉 JBoss: 

Shell代碼    收藏代碼
  1. [standalone@localhost:9999 /] :shutdown  
  2. {"outcome" => "success"}  
  3. [standalone@localhost:9999 /]     

    在根 node 下有個 operation 用來重啓 JBoss: 

Shell代碼    收藏代碼
  1. [standalone@localhost:9999 /] :reload  
  2. {"outcome" => "success"}  
  3. [standalone@localhost:9999 /]   

    重啓後, CLI 保持着 connected 狀態。

相關文章
相關標籤/搜索