3.5. 管理 API
3.5.1. HTTP API 复制链接链接已复制到粘贴板!
HTTP API 端点是管理客户端的入口点,它依赖于 HTTP 协议与 JBoss EAP 管理层集成。
HTTP API 由 JBoss EAP 管理控制台使用,但也为其他客户端提供集成功能。默认情况下,HTTP API 可通过 http://HOST_NAME: 9990/management 访问。此 URL 将显示公开给 API 的原始属性和值。
读取资源
虽然您可以使用 HTTP POST 方法读取、写入或执行其他操作,但您可以使用 GET 请求 来执行一些读取操作。HTTP GET 方法使用以下 URL 格式:
http://HOST_NAME:9990/management/PATH_TO_RESOURCE?operation=OPERATION&PARAMETER=VALUE
http://HOST_NAME:9990/management/PATH_TO_RESOURCE?operation=OPERATION&PARAMETER=VALUE
务必将所有可替换值替换为适合您的请求的值。以下值是 OPERATION 可替换 值 的可用选项:
| 值 | 描述 |
|---|---|
| attribute |
执行 |
| operation-description |
执行 |
| operation-names |
执行 |
| resource |
执行 |
| resource-description |
执行 |
| 快照 |
执行 |
以下示例 URL 演示了如何使用 HTTP API 执行读取操作。
示例:阅读资源的所有属性和值
http://HOST_NAME:9990/management/subsystem/undertow/server/default-server/http-listener/default
http://HOST_NAME:9990/management/subsystem/undertow/server/default-server/http-listener/default
这将显示 默认 HTTP 侦听器的所有属性及其值。
默认操作为 read-resource。
示例:阅读资源属性的值
http://HOST_NAME:9990/management/subsystem/datasources/data-source/ExampleDS?operation=attribute&name=enabled
http://HOST_NAME:9990/management/subsystem/datasources/data-source/ExampleDS?operation=attribute&name=enabled
这会读取 ExampleDS 数据源的 enabled 属性的值。
更新资源
您可以使用 HTTP POST 方法更新配置值或使用 HTTP API 执行其他操作。您必须为这些操作提供身份验证。
以下示例演示了如何使用 HTTP API 更新资源。
示例:更新资源的属性值
curl --digest http://HOST_NAME:9990/management --header "Content-Type: application/json" -u USERNAME:PASSWORD -d '{"operation":"write-attribute", "address":["subsystem","datasources","data-source","ExampleDS"], "name":"enabled", "value":"false", "json.pretty":"1"}'
$ curl --digest http://HOST_NAME:9990/management --header "Content-Type: application/json" -u USERNAME:PASSWORD -d '{"operation":"write-attribute", "address":["subsystem","datasources","data-source","ExampleDS"], "name":"enabled", "value":"false", "json.pretty":"1"}'
这会将 ExampleDS 数据源的 enabled 属性值更新为 false。
示例:把操作到服务器
curl --digest http://localhost:9990/management --header "Content-Type: application/json" -u USERNAME:PASSWORD -d '{"operation":"reload"}'
$ curl --digest http://localhost:9990/management --header "Content-Type: application/json" -u USERNAME:PASSWORD -d '{"operation":"reload"}'
这将重新加载服务器。
如需有关如何使用 HTTP API 部署应用程序到 JBoss EAP 的信息,请参阅使用 HTTP API 部署应用。
3.5.1.1. custom-constant HTTP 标头 复制链接链接已复制到粘贴板!
JBoss EAP 的 HTTP 管理端点返回发送到客户端的所有响应中的预定义 HTTP 标头集合。除了此预定义的 HTTP 标头集合外,您还可以定义要返回的 custom-constant HTTP 标头。
JBoss EAP 对请求应用 custom-constant HTTP 标头,如下所示:
JBoss EAP 通过将配置的前缀与请求路径匹配来应用 custom-constant HTTP 标头。
例如,您可以将 custom-constant HTTP 标头映射到请求路径上的请求,如
/或/management。如果请求匹配多个前缀,JBoss EAP 会从所有映射中应用 custom-constant HTTP 标头。
例如,对路径
/management 的请求与 /和/management的映射相匹配。JBoss EAP 应用两个映射中的标头。在处理请求结束时,通过覆盖由对应端点设置的标头,在响应返回到客户端之前覆盖。
例如,管理端点在每个响应中设置
X-Frame-Options标头。如果您使用名称X-Frame-Options 定义了 custom-constant HTTP标头,custom-constant HTTP 标头会覆盖默认标头。
您可以定义多个 custom-constant HTTP 标头,以在单个映射的响应中返回。
以下是定义 custom-constant HTTP 标头的规则:
- custom-constant HTTP 标头只能包含 RFC-7231 - Hypertext 传输协议(HTTP/1.1)中支持的字符:Semantics 和内容。
您无法覆盖以下预定义 HTTP 标头:
-
连接 -
content-Length -
content-Type -
Date -
transfer-Encoding
尝试覆盖这些预定义的标头会导致错误。
例如,如果您试图使用名称
日期设置 custom-constant HTTP 标头,则返回以下错误:{ "outcome" => "failed", "failure-description" => "WFLYCTL0458:Disallowed HTTP Header name 'Date'", "rolled-back" => true }{ "outcome" => "failed", "failure-description" => "WFLYCTL0458:Disallowed HTTP Header name 'Date'", "rolled-back" => true }Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
创建 custom-constant HTTP 标头时的重要注意事项:
- JBoss EAP 不验证指定路径是否可以访问。
- 子系统可以动态添加 HTTP 管理接口支持的上下文。
- custom-constant HTTP 标头不会改变端点如何处理对请求的响应。
3.5.1.2. 定义 custom-constant HTTP 标头 复制链接链接已复制到粘贴板!
定义一个 custom-constant HTTP 标头,在每次响应所需路径前缀上的请求时返回。
在创建自定义constant HTTP 标头前,您必须了解以下注意事项:
- JBoss EAP 不验证指定路径是否可以访问。
- 子系统可以动态添加 HTTP 管理接口支持的上下文。
- custom-constant HTTP 标头不会改变端点如何处理对请求的响应。
流程
定义 custom-constant HTTP 标头:
/core-service=management/management-interface=http-interface:write-attribute(name=constant-headers,value=[{path="PATH_PREFIX",headers=[{name="HEADER_NAME",value="HEADER_VALUE"}]}])/core-service=management/management-interface=http-interface:write-attribute(name=constant-headers,value=[{path="PATH_PREFIX",headers=[{name="HEADER_NAME",value="HEADER_VALUE"}]}])Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要通过使用
write-attribute操作,您将收到重新加载必需提示。重新载入服务器以使更改生效:
reload
reloadCopy to Clipboard Copied! Toggle word wrap Toggle overflow 对 HTTP 管理接口的请求现在返回 HTTP 标头 HEADER_NAME,除了预定义的 HTTP 标头集合外,还返回值 HEADER_VALUE。
custom-constant HTTP 标头 X-Help 示例
/core-service=management/management-interface=http-interface:write-attribute(name=constant-headers,value=[{path="/",headers=[{name="X-Help",value="http://mywebsite.com/help"}]}])/core-service=management/management-interface=http-interface:write-attribute(name=constant-headers,value=[{path="/",headers=[{name="X-Help",value="http://mywebsite.com/help"}]}])Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证步骤
向 HTTP 管理接口发送请求:
curl -s -D - -o /dev/null --digest http://localhost:9990/management/ -u USERNAME:PASSWORD
$ curl -s -D - -o /dev/null --digest http://localhost:9990/management/ -u USERNAME:PASSWORDCopy to Clipboard Copied! Toggle word wrap Toggle overflow custom-constant HTTP 标头
X-Help的响应示例:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 响应中包含
X-HELP custom-constant HTTP 标头。
3.5.1.3. 用于定义 custom-constant HTTP 标头的 CLI 命令 复制链接链接已复制到粘贴板!
以下 CLI 命令在单机和受管域模式中定义自定义-constant HTTP 标头:
- 单机模式
要定义单个 custom-constant HTTP 标头,请使用以下命令:
/core-service=management/management-interface=http-interface:write-attribute(name=constant-headers,value=[{path=/PREFIX,headers=[{name=X-HEADER,value=HEADERVALUE}]}])/core-service=management/management-interface=http-interface:write-attribute(name=constant-headers,value=[{path=/PREFIX,headers=[{name=X-HEADER,value=HEADERVALUE}]}])Copy to Clipboard Copied! Toggle word wrap Toggle overflow 该命令生成以下 XML 配置:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要定义多个 custom-constant HTTP 标头,请使用以下命令:
/core-service=management/management-interface=http-interface:write-attribute(name=constant-headers,value=[{path=/PREFIX1,headers=[{name=X-HEADER,value=HEADERVALUE-FOR-X}]},{path=/PREFIX2,headers=[{name=Y-HEADER,value=HEADERVALUE-FOR-Y}]}])/core-service=management/management-interface=http-interface:write-attribute(name=constant-headers,value=[{path=/PREFIX1,headers=[{name=X-HEADER,value=HEADERVALUE-FOR-X}]},{path=/PREFIX2,headers=[{name=Y-HEADER,value=HEADERVALUE-FOR-Y}]}])Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- 域模式
要定义单个 custom-constant HTTP 标头,请使用以下命令:
/host=master/core-service=management/management-interface=http-interface:write-attribute(name=constant-headers,value=[{path=/PREFIX,headers=[{name=X-HEADER,value=HEADER-VALUE}]}])/host=master/core-service=management/management-interface=http-interface:write-attribute(name=constant-headers,value=[{path=/PREFIX,headers=[{name=X-HEADER,value=HEADER-VALUE}]}])Copy to Clipboard Copied! Toggle word wrap Toggle overflow 该命令生成以下 XML 配置:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要定义多个 custom-constant HTTP 标头,请使用以下命令:
/host=master/core-service=management/management-interface=http-interface:write-attribute(name=constant-headers,value=[ {path=/PREFIX-1,headers=[{name=X-HEADER,value=HEADER-VALUE-FOR-X}]},{path=/PREFIX-2,headers=[{name=Y-HEADER,value=HEADER-VALUE-FOR-Y}]}])/host=master/core-service=management/management-interface=http-interface:write-attribute(name=constant-headers,value=[ {path=/PREFIX-1,headers=[{name=X-HEADER,value=HEADER-VALUE-FOR-X}]},{path=/PREFIX-2,headers=[{name=Y-HEADER,value=HEADER-VALUE-FOR-Y}]}])Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.5.2. 原生 API 复制链接链接已复制到粘贴板!
原生 API 端点是管理客户端的入口点,它依赖于原生协议与 JBoss EAP 管理层集成。原生 API 由 JBoss EAP 管理 CLI 使用,但也为其他客户端提供集成功能。
以下 Java 代码演示了如何使用原生 API 从 Java 代码执行管理操作的示例。
您必须将 EAP_HOME/bin/client/jboss-cli-client.jar 文件中所需的 JBoss EAP 库添加到您的类路径中。
示例:使用原生 API 读取资源