3.4. 管理 API
管理 API 端点充当管理客户端的入口点,以与 JBoss EAP 管理层集成。
3.4.1. HTTP API 复制链接链接已复制到粘贴板!
HTTP API 端点是依赖 HTTP 协议与 JBoss EAP 管理层集成的管理客户端的入口点。
HTTP API 由 JBoss EAP 管理控制台使用,但也为其他客户端提供集成功能。默认情况下,可通过 http://HOST_NAME:9990/management
访问 HTTP API。此 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
可替换值的可用选项:
value | 描述 |
---|---|
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.4.1.1. custom-constant HTTP 标头 复制链接链接已复制到粘贴板!
JBoss EAP 的 HTTP 管理端点在发送到客户端的所有响应中返回预定义的 HTTP 标头集合。除了这个预定义的 HTTP 标头集外,您还可以定义返回的 custom-constant HTTP 标头。
JBoss EAP 将自定义 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 标头会覆盖默认标头。
您可以定义在单个映射的响应中返回的多个自定义 HTTP 标头。
以下是定义自定义 HTTP 标头的规则:
- custom-constant HTTP 标头只能包含 RFC-7231 - Hypertext Transfer Protocol (HTTP/1.1)中支持的字符。
您无法覆盖以下预定义的 HTTP 标头:
-
连接
-
content-Length
-
Content-Type
-
Date
Transfer-Encoding
尝试覆盖任何这些预定义的标头会导致错误。
例如,如果您尝试使用名称
Date
设置 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
-
创建自定义 HTTP 标头时的重要注意事项:
- JBoss EAP 不验证是否可以访问指定路径。
- 子系统可以动态添加 HTTP 管理接口支持的上下文。
- Custom-constant HTTP 标头不会更改端点如何处理对请求的响应。
3.4.1.2. 定义 custom-constant HTTP 标头 复制链接链接已复制到粘贴板!
定义在所需路径前缀的每个响应中返回的自定义 HTTP 标头。
在创建 custom-constant HTTP 标头前,您必须了解以下注意事项:
- JBoss EAP 不 验证是否可以访问指定路径。
- 子系统可以动态添加 HTTP 管理接口支持的上下文。
- Custom-constant HTTP 标头不会更改端点如何处理对请求的响应。
流程
定义自定义恒定的 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-required
提示符打开。重新载入服务器以使更改生效:
reload
reload
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 现在,对 HTTP 管理接口的请求会返回 HTTP 标头 HEADER_NAME,它的值为 HEADER_VALUE,除了预定义的 HTTP 标头集合之外。
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 managment 接口发送请求:
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:PASSWORD
Copy 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.4.1.3. 用于定义自定义 HTTP 标头的 CLI 命令 复制链接链接已复制到粘贴板!
以下 CLI 命令在独立和受管域模式中定义自定义 HTTP 标头。
独立模式
要定义单个自定义 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 要定义多个自定义 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
域模式
要定义单个自定义 HTTP 标头,请使用以下命令:
/host=primary/core-service=management/management-interface=http-interface:write-attribute(name=constant-headers,value=[{path=/PREFIX,headers=[{name=X-HEADER,value=HEADER-VALUE}]}])
/host=primary/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 要定义多个自定义 HTTP 标头,请使用以下命令:
/host=primary/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=primary/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.4.2. 原生 API 复制链接链接已复制到粘贴板!
原生 API 端点是依赖原生协议与 JBoss EAP 管理层集成的管理客户端的入口点。原生 API 由 JBoss EAP 管理 CLI 使用,但也为其他客户端提供集成功能。
以下 Java 代码演示了如何使用原生 API 从 Java 代码执行管理操作的示例。
您必须将 EAP_HOME/bin/client/jboss-cli-client.jar
文件中找到的所需的 JBoss EAP 库添加到您的类路径。
示例:使用原生 API 来读取资源