JBoss CLI

转自http://www.cnblogs.com/inteliot/archive/2012/08/05/2623719.html

为 了便于维护和管理, 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 中:

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 中:

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 端口进行通讯。

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 有一些参数:

Shell代码  

  1. ./jboss-admin.sh --version
  2. # 打印版本信息。 除 JBoss AS release 的信息以外,都是 CLI 所在的机器的信息。
  3. ./jboss-admin.sh --controller=host:port
  4. # 指定 CLI 连接的目标 controller。 该设定并没有启动连接, 只有调用 connect 命令或者 --connect 参数才会启动连接
  5. ./jboss-admin.sh --file=FILE
  6. # 读取 FILE 里的命令列表,逐个执行。 每个命令一行。 运行完后,退出
  7. ./jboss-admin.sh --command COMMAND
  8. # 执行 --command 后面的 COMMAND, 并且退出。 “--command”  可以省略。
  9. ./jboss-admin.sh --commands COMMAND1,COMMAND2...
  10. # 执行 --commands 后面的命令列表, 以逗号分开。运行完成后退出。“--commands” 可以省略。
  11. ./jboss-admin.sh --user=username --password=password
  12. # 指定需要 authentication 的用户名和密码。
  13. ./jboss-admin.sh --connect --gui
  14. # 启动 GUI 进行可视化 command builder
  15. # --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. [[email protected]192.168.1.102:9999 /] deploy /home/lgao/sources/my_own/maven_webapp/myapp/target/myapp.war
  2. # 部署一个 war, 同时启动
  3. [[email protected]192.168.1.102:9999 /] deploy -l
  4. myapp.war
  5. # 列出已部署的应用
  6. [[email protected]192.168.1.102:9999 /] undeploy myapp.war
  7. # 卸载 myapp.war
  8. [[email protected]192.168.1.102:9999 /] deploy /home/lgao/sources/my_own/maven_webapp/myapp/target/myapp.war  --disabled
  9. # 部署一个 war, 但是不启动它
  10. [[email protected]192.168.1.102:9999 /] deploy -l
  11. myapp.war
  12. [[email protected]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. [[email protected]:9999 /] command add --node-type=/subsystem=web/connector --propertiy-id=name --command-name=connector

然后我们就可以使用 connector 命令了:

Shell代码  

  1. [[email protected]: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. [[email protected]: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. [[email protected]:9999 /] :shutdown
  2. {"outcome" => "success"}
  3. [[email protected]:9999 /]

在根 node 下有个 operation 用来重启 JBoss:

Shell代码  

  1. [[email protected]:9999 /] :reload
  2. {"outcome" => "success"}
  3. [[email protected]:9999 /]

重启后, CLI 保持着 connected 状态。

时间: 2024-08-14 22:49:50

JBoss CLI的相关文章

java:如何让程序按要求自行重启?

正文开始前的废话: 这里的程序即包括b/s的web application,也包括standalone的类c/s的java application. 为什么要自我重启? 场景1:分布式环境中,一般会有很多应用(即包括c/s的java application,又有b/s的web application)部署在不同的环境中,为了管理方便,通常会把一些公用的配置,比如:报警发邮件用的邮箱账号/密码/smtp信息,公用的ftp账号信息,甚至jdbc的连接串信息等,统一放在某个位置(共享的网络存储目录.r

JBoss AS 7之目录结构(The Return Of The King)

1.2 JBoss As 7体系结构 下面介绍一下JBoss的体系结构,具体的目录结构.如果熟悉以前JBoss版本的人,一定会发现JBoss AS 7与之前的JBoss的目录结构有了很大的不同.下面介绍一下JBoss AS 7的目录结构.                                         主目录结构 目录 描述 bin Unix和win环境下的启动脚本和启动配置文件 bundles 存放OSGI bundle docs/schema 存放XML schema定义文件

JBOSS EAP 6 系列一 新特性

在项目中,采用的架构是Springmvc+spring+EJB+Jpa等架构,当然服务器是Jboss,本次Jboss我们采用的是JBossEap6.2,Jboss7的新特性与Jboss4.5的大的改变是: 模块申明式容器 JBOSS EAP不再有lib的概念,一切都是module.无论是系统调用的lib,用户编制的lib,或者应用程序引用到的第三方lib都以模块的方式构建起来,并在使用的地方申明具体使用了哪个模块.这就带来两个好处, 按官方的说法提供了一种完全的模块化的类加载系统,JBOSS会根

JBoss AS 7之文件夹结构(The Return Of The King)

1.2 JBoss As 7体系结构 以下介绍一下JBoss的体系结构,详细的文件夹结构. 假设熟悉曾经JBoss版本号的人,一定会发现JBoss AS 7与之前的JBoss的文件夹结构有了非常大的不同.以下介绍一下JBoss AS 7的文件夹结构.                                         主文件夹结构 文件夹 描写叙述 bin Unix和win环境下的启动脚本和启动配置文件 bundles 存放OSGI bundle docs/schema 存放XML

ITOO之搭建开发环境(三)——JBOSS 7目录结构

JBOSS是一个基于J2EE的开放源代码的应用服务器.它实现了J2EE的规范:EJB,JMS,JTS/JTA,Servlet and JSP ,JNDI ,它提供了一些高级特性,比如集群.JMX.Web Service.还整合了IIOP(InternetInter-ORB Protocol互联网内部对象请求代理协议). JBOSS有很多版本,现在最新的版本7系列的.所以下面介绍一下7的目录结构.熟悉之前版本的人一定会发现7与之前的版本的目录结构有了很大的不同. 主目录结构: l  bin:Uni

Class loading in JBoss AS 7--官方文档

Class loading in AS7 is considerably different to previous versions of JBoss AS. Class loading is based on the JBoss Modules project. Instead of the more familiar hierarchical class loading environment, AS7's class loading is based on modules that ha

JBoss EAP 7消息系统

JBoss EAP 7消息服务 JBoss EAP 6的消息系统是通过HornetQ实现,这是一个JBoss的社区项目.后来HornetQ捐献给了Apache ActiveMQ项目,HornetQ社区加入对HornetQ的支持,并创建了新的消息系统Apache ActiveMQ Artemis,这就是JBoss EAP 7所使用的消息系统.Apache ActiveMQ Artemis提供了对JBoss EAP 6的兼容性支持,对HornetQ也提供了协议上的支持. 消息系统 经典的JMS 1.

JBoss AS 7 的应用服务特性

1.1  JBoss AS 7 新特性 在2011年7月12号,JBoss 发布了它的 JBoss AS 7.0.0.这个版本的JBoss AS有几个重大的提高,尤其是在管理模块上.你会发现,这个JBoss AS 7 与以前的发布版本有非常大的不同,目录结构上有重大调整.在下面几个方面有重大的提升: l  应用服务器作为管理域(Managed Domain)的一部分,提供了中心化管理多个服务器实例和物理主机,或者它能够作为独立的主机并允许单个服务器实例. l  管理Web 控制台和管理命令行接口

Jboss EAP:native management API学习

上一节已经学习了CLI命令行来控制JBOSS,如果想在程序中以编码方式来控制JBOSS,可以参考下面的代码,实际上在前面的文章,用代码控制Jboss上的DataSource,已经有所接触了,API与CLI是完全等价的,一个是人工敲指令,一个是代码控制,二者最终的效果一致. import com.sun.javafx.sg.PGShape; import org.jboss.as.controller.client.ModelControllerClient; import org.jboss.a