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 状态。

相关文章
相关标签/搜索