第 4 章 创建和执行请求
JBoss EAP 配置呈现为可寻址资源的层次结构树,每种都提供自己的一组操作。管理 CLI 操作请求允许低级别与管理模式交互,并提供可控的方式来编辑服务器配置。
操作请求使用以下格式:
/NODE_TYPE=NODE_NAME:OPERATION_NAME(PARAMETER_NAME=PARAMETER_VALUE)
操作请求由三个部分组成:
- 地址
-
该地址指定要在其上执行操作的资源节点。NODE_TYPE 映射到元素名称,NODE_NAME 映射到配置 XML 中的该元素的
name属性。资源树的每一级别都用斜杠(/)分隔。 - 操作名称
-
要在资源节点上执行的操作。它以冒号(
:)前缀。 - parameters
-
因操作而异的必选或可选参数集合。它们包含在括号
()中。
构建操作请求
确定地址
您可以引用 XML 配置文件(
standalone.xml、domain.xml或host.xml),以帮助确定所需的地址。您还可以使用 tab 自动完成功能来查看可用资源。以下是 root(
/)级别上资源的几个常用地址。-
/deployment=DEPLOYMENT_NAME- 部署配置. -
/socket-binding-group=SOCKET_BINDING_GROUP_NAME- 套接字绑定配置. -
/interface=INTERFACE_NAME- 接口配置. -
/subsystem=SUBSYSTEM_NAME- 作为单机服务器运行时的子系统配置. -
/profile=PROFILE_NAME/subsystem=SUBSYSTEM_NAME- 在受管域中运行时,适用于所选配置文件的子系统配置。 -
/host=HOST_NAME- 在受管域中运行时所选主机的服务器配置。
以下地址用于
ExampleDS数据源。/subsystem=datasources/data-source=ExampleDS-
确定操作
每种资源类型的资源节点的可用操作都有所不同。您可以使用资源地址上的
:read-operation-names操作来查看可用的操作。您还可以使用 tab 自动完成功能。使用
:read-operation-description操作来获取资源特定操作的信息。以下操作(包含适当的参数后)将为
ExampleDS数据源设置属性值:/subsystem=datasources/data-source=ExampleDS:write-attribute确定参数
每个操作都有自己的一组可用参数。如果您在没有必要参数的情况下尝试执行操作,您会收到一条错误消息,指出参数无法
为空。使用逗号(
,)分隔多个参数。如果某个操作没有任何参数,则括号是可选的。对资源使用
:read-operation-description操作,在操作名称中传递,以确定该操作所需的参数。您还可以使用 Tab 补全来列出可用的参数。以下操作通过将
enabled属性设置为false来禁用ExampleDS数据源。/subsystem=datasources/data-source=ExampleDS:write-attribute(name=enabled,value=false)
输入之后,管理界面将在服务器配置上执行操作请求。根据操作请求,您将接收到包含结果以及操作结果或响应的输出。
禁用 ExampleDS 数据源的以下响应显示操作成功,需要重新加载服务器才能生效。
{
"outcome" => "success",
"response-headers" => {
"operation-requires-reload" => true,
"process-state" => "reload-required"
}
}
您可以使用 read-attribute 操作来读取 ExampleDS 数据源的 enabled 属性的值。
/subsystem=datasources/data-source=ExampleDS:read-attribute(name=enabled)
以下响应显示操作成功,并且 enabled 值为 false。
{
"outcome" => "success",
"result" => false,
}
4.1. 显示资源值 复制链接链接已复制到粘贴板!
您可以使用 read-resource 操作来查看资源的属性值。
:read-resource
您可以指定参数,以递归方式提供有关子资源的完整信息。您还可以指定参数,以包括运行时属性、解析表达式和包含别名。使用 read-operation-description(name=read-resource) 查看所有可用参数的 read-resource 的描述。
以下示例读取部署的属性:它包括部署名称、是否启用它的详细信息,以及它最后一次启用的时间。
/deployment=DEPLOYMENT_NAME:read-resource
{
"outcome" => "success",
"result" => {
...
"enabled" => true,
"enabled-time" => 1453929902598L,
"enabled-timestamp" => "2016-01-27 16:25:02,598 EST",
"name" => "DEPLOYMENT_NAME",
"owner" => undefined,
"persistent" => true,
"runtime-name" => "DEPLOYMENT_NAME",
"subdeployment" => undefined,
"subsystem" => {
"undertow" => undefined,
"logging" => undefined
}
}
}
包括运行时属性
include-runtime 参数可用于检索运行时属性。
以下示例读取部署的属性:除了持久属性外,它还包含运行时属性,如部署状态和上次禁用的时间。
/deployment=DEPLOYMENT_NAME:read-resource(include-runtime=true)
{
"outcome" => "success",
"result" => {
...
"disabled-time" => undefined,
"disabled-timestamp" => undefined,
"enabled" => true,
"enabled-time" => 1453929902598L,
"enabled-timestamp" => "2016-01-27 16:25:02,598 EST",
"name" => "DEPLOYMENT_NAME",
"owner" => undefined,
"persistent" => true,
"runtime-name" => "DEPLOYMENT_NAME",
"status" => "OK",
"subdeployment" => undefined,
"subsystem" => {
"undertow" => undefined,
"logging" => undefined
}
}
}
您还可以在传递布尔值参数时使用 not 运算符(!)。例如:
-
:read-resource(include-runtime=false)can be entered as:read-resource(!include-runtime) -
:read-resource(include-runtime=true)可以输入为:read-resource(include-runtime)
递归读取子资源
可以使用 递归 参数从子资源中以递归方式检索属性。
以下示例读取部署的属性:除了资源自己的属性外,它还以递归方式返回其子资源的属性,如 undertow 子系统配置。
/deployment=DEPLOYMENT_NAME:read-resource(recursive=true)
{
"outcome" => "success",
"result" => {
...
"enabled" => true,
"enabled-time" => 1453929902598L,
"enabled-timestamp" => "2016-01-27 16:25:02,598 EST",
"name" => "DEPLOYMENT_NAME",
"owner" => undefined,
"persistent" => true,
"runtime-name" => "DEPLOYMENT_NAME",
"subdeployment" => undefined,
"subsystem" => {
"undertow" => {
"context-root" => "/test",
"server" => "default-server",
"virtual-host" => "default-host",
"servlet" => undefined,
"websocket" => undefined
},
"logging" => {"configuration" => undefined}
}
}
}
排除默认值
include-defaults 参数可用于在读取资源的属性时显示或隐藏默认值。默认情况下是 true,这意味着在使用 read-resource 操作时会显示默认值。
以下示例对 undertow 子系统使用了 read-resource 操作:
/subsystem=undertow:read-resource
{
"outcome" => "success",
"result" => {
"default-security-domain" => "other",
"default-server" => "default-server",
"default-servlet-container" => "default",
"default-virtual-host" => "default-host",
"instance-id" => expression "${jboss.node.name}",
"statistics-enabled" => false,
"buffer-cache" => {"default" => undefined},
"configuration" => {
"filter" => undefined,
"handler" => undefined
},
"server" => {"default-server" => undefined},
"servlet-container" => {"default" => undefined}
}
}
以下示例也对 undertow 子系统使用 read-resource 操作,但将 include-defaults 参数设置为 false :现在,一些属性 (如启用了 statistics 和 default-server )显示 未定义 的值,而不是默认值。
/subsystem=undertow:read-resource(include-defaults=false)
{
"outcome" => "success",
"result" => {
"default-security-domain" => undefined,
"default-server" => undefined,
"default-servlet-container" => undefined,
"default-virtual-host" => undefined,
"instance-id" => undefined,
"statistics-enabled" => undefined,
"buffer-cache" => {"default" => undefined},
"configuration" => {
"filter" => undefined,
"handler" => undefined
},
"server" => {"default-server" => undefined},
"servlet-container" => {"default" => undefined}
}
}
resolve Expressions
resolve-expressions 参数可用于将返回属性的表达式解析为服务器上对应的值。
带有表达式的属性,作为其值使用格式 ${PARAMETER: DEFAULT_VALUE}。如需更多信息 ,请参阅《 配置指南》 中的属性替换。
以下示例读取部署的属性:instance-id 属性显示其解析值(test-name),而不显示表达式(${jboss.node.name})。
/subsystem=undertow:read-resource(resolve-expressions=true)
{
"outcome" => "success",
"result" => {
"default-security-domain" => "other",
"default-server" => "default-server",
"default-servlet-container" => "default",
"default-virtual-host" => "default-host",
"instance-id" => "test-name",
"statistics-enabled" => false,
"buffer-cache" => {"default" => undefined},
"configuration" => {
"filter" => undefined,
"handler" => undefined
},
"server" => {"default-server" => undefined},
"servlet-container" => {"default" => undefined}
}
}