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 中:
- <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 /]
在根 node 下有个 operation 用来重启 JBoss:
- [standalone@localhost:9999 /] :reload
- {"outcome" => "success"}
- [standalone@localhost:9999 /]
重启后, CLI 保持着 connected 状态。
JBoss CLI的更多相关文章
- jboss CLI 命令行接口学习(适用JBOSS EAP 6.2+)
一.确认CLI所使用的端口 以domain模式为例,查看domain controller(也就是master主机)上的host.xml <management-interfaces> & ...
- java:如何让程序按要求自行重启?
正文开始前的废话: 这里的程序即包括b/s的web application,也包括standalone的类c/s的java application. 为什么要自我重启? 场景1:分布式环境中, ...
- jboss6.4 域模式自动部署
1.通过jenkins传递部署包到服务器,调用自动部署shell完成jboss6.4的域模式部署: 2.自动部署shell如下: 完成部署包重命名(从jenkins过来的包可能没有改名:). 调用jb ...
- 安装dcm4chee-arc-light-5.4.1-mysql步骤
一.进入网址: https://github.com/dcm4che/dcm4chee-arc-light/wiki/Installation 这个是GitHub上面给的步骤,可能会比较难理解,按照所 ...
- Keycloak 13 自定义用户身份认证流程(User Storage SPI)
Keycloak 版本:13.0.0 介绍 Keycloak 是为现代应用程序和服务提供的一个开源的身份和访问管理的解决方案. Keycloak 在测试环境可以使用内嵌数据库,生产环境需要重新配置数据 ...
- Jboss EAP:native management API学习
上一节已经学习了CLI命令行来控制JBOSS,如果想在程序中以编码方式来控制JBOSS,可以参考下面的代码,实际上在前面的文章,用代码控制Jboss上的DataSource,已经有所接触了,API与C ...
- JBoss AS7 快速配置
作者:MinUnix 原文出处:http://www.minunix.com/2013/08/jboss-as7-01/ 如需转载请注明出处! 文档下载:http://www.minunix.co ...
- Class loading in JBoss AS 7--官方文档
Class loading in AS7 is considerably different to previous versions of JBoss AS. Class loading is ba ...
- JBOSS EAP 6 系列一 新特性
在项目中,采用的架构是Springmvc+spring+EJB+Jpa等架构,当然服务器是Jboss,本次Jboss我们采用的是JBossEap6.2,Jboss7的新特性与Jboss4.5的大的改变 ...
随机推荐
- django单元测试
django 单元测试小结 django 测试 从前很少写单元测试了,特别是web应用.最近不知不觉喜欢起来这个事情了,发现单元测试对于软件的模块,正交性有很大促进作用,因为函数,模块写的不合 ...
- table 排序 添加 删除 等操作
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- discuz!安装遇到问题的解决方案
正常的安装步骤好多地方都有写过了,我安装的时候遇到问题百度翻了个遍也没有找到,现在问题已经解决了,发出了分享一下! 进入第三步创建数据库的时候提示:由于目标计算机积极拒绝,无法连接. 打开phpmya ...
- Calculating Stereo Pairs
Calculating Stereo Pairs Written by Paul BourkeJuly 1999 Introduction The following discusses comput ...
- console.log()与alert()的区别
1.alert() a.有阻塞作用,不点击确定,后续代码无法继续执行 b.alert只能输出string,如果alert输出的是对象,会自动调用toString()方法 eg:alert([1,2,3 ...
- C#图片压缩处理算法
原文链接:http://blog.csdn.net/szstephenzhou/article/details/38900345
- break continue.
1.break与continue.这两个关键字一般放在循环的花括号里面使用.break——结束整个循环.continue——结束本次循环,进入下次循环. 2.while循环 //初始条件 while( ...
- python学习之路-day12-mysql && orm
一.数据库 1.数据库介绍 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,每个数据库都有一个或多个不同的API用于创建,访问,管理,搜索和复制所保存的数据.我们也可以将数据存储 ...
- 读Windows核心编程-5-作业
作业(Job) 有时候需要把一些进程集中管理,如终止一个进程以及它产生的子进程,但由于Windows并没有维护进程间父子关系,所以除非进程本身以某种方式记录这些信息,否则很难做到管理这种父子进程树.而 ...
- asp.net C# cookies 的使用方法
Response.Cookie("username").value="aa" 写入username=Request.Cookies("username ...