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
Copy to Clipboard Toggle word wrap

务必将所有可替换值替换为适合您的请求的可替换值。以下值是 OPERATION 可替换值的可用选项:

Expand
value描述

attribute

执行 read-attribute 操作。

operation-description

执行 read-operation-description 操作。

operation-names

执行 read-operation-names 操作。

resource

执行 read-resource 操作。

resource-description

执行 read-resource-description 操作。

快照

执行 list-snapshots 操作。

以下示例 URL 演示了如何使用 HTTP API 执行读取操作。

示例:读取资源的所有属性和值

http://HOST_NAME:9990/management/subsystem/undertow/server/default-server/http-listener/default
Copy to Clipboard Toggle word wrap

这将显示 默认 HTTP 侦听器的所有属性及其值。

注意

默认操作为 read-resource

示例:读取资源属性值

http://HOST_NAME:9990/management/subsystem/datasources/data-source/ExampleDS?operation=attribute&name=enabled
Copy to Clipboard Toggle word wrap

这会读取 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"}'
Copy to Clipboard Toggle word wrap

这会将 ExampleDS 数据源的 enabled 属性的值更新为 false

示例:向服务器发出一个操作

$ curl --digest http://localhost:9990/management --header "Content-Type: application/json" -u USERNAME:PASSWORD -d '{"operation":"reload"}'
Copy to Clipboard Toggle word wrap

这会重新加载服务器。

如需有关如何使用 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
      }
      Copy to Clipboard Toggle word wrap

创建自定义 HTTP 标头时的重要注意事项:

  • JBoss EAP 不验证是否可以访问指定路径。
  • 子系统可以动态添加 HTTP 管理接口支持的上下文。
  • Custom-constant HTTP 标头不会更改端点如何处理对请求的响应。

3.4.1.2. 定义 custom-constant HTTP 标头

定义在所需路径前缀的每个响应中返回的自定义 HTTP 标头。

重要

在创建 custom-constant HTTP 标头前,您必须了解以下注意事项:

  • JBoss EAP 验证是否可以访问指定路径。
  • 子系统可以动态添加 HTTP 管理接口支持的上下文。
  • Custom-constant HTTP 标头不会更改端点如何处理对请求的响应。

流程

  1. 定义自定义恒定的 HTTP 标头:

    /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 Toggle word wrap
    重要

    使用 write-attribute 操作会导致 reload-required 提示符打开。

  2. 重新载入服务器以使更改生效:

    reload
    Copy to Clipboard Toggle word wrap

    现在,对 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"}]}])
    Copy to Clipboard Toggle word wrap

验证步骤

  • 向 HTTP managment 接口发送请求:

    curl -s -D - -o /dev/null --digest http://localhost:9990/management/ -u USERNAME:PASSWORD
    Copy to Clipboard Toggle word wrap

    示例 custom-constant HTTP 标头 X-Help示例的响应

    admin:redhat
    HTTP/1.1 200 OK
    Connection: keep-alive
    X-Frame-Options: SAMEORIGIN
    Content-Type: application/json; charset=utf-8
    Content-Length: 3312
    X-Help: http://mywebsite.com
    Date: Tue, 27 Oct 2020 08:13:17 GMT
    Copy to Clipboard Toggle word wrap

    响应包含 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}]}])
    Copy to Clipboard Toggle word wrap

    该命令生成以下 XML 配置:

    <management-interfaces>
        <http-interface http-authentication-factory="management-http-authentication">
            <http-upgrade enabled="true" sasl-authentication-factory="management-sasl-authentication/>
            <socket-binding http="management-http"/>
            <constant-headers>
                <header-mapping path="/PREFIX">
                    <header name="X-HEADER" value="HEADERVALUE"/>
                </header-mapping>
            </constant-headers>
        </http-interface>
    </management-interfaces>
    Copy to Clipboard Toggle word wrap
  • 要定义多个自定义 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}]}])
    Copy to Clipboard Toggle word wrap

域模式

  • 要定义单个自定义 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}]}])
    Copy to Clipboard Toggle word wrap

    该命令生成以下 XML 配置:

    <management-interfaces>
        <http-interface http-authentication-factory="management-http-authentication">
            <http-upgrade enabled="true" sasl-authentication-factory="management-sasl-authentication/>
            <socket interface="management" port="${jboss.management.http.port:9990}"/>
            <constant-headers>
                <header-mapping path="/PREFIX">
                    <header name="X-HEADER" value="HEADER-VALUE"/>
                </header-mapping>
            </constant-headers>
        </http-interface>
    </management-interfaces>
    Copy to Clipboard Toggle word wrap
  • 要定义多个自定义 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}]}])
    Copy to Clipboard Toggle word wrap

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 来读取资源

// Create the management client
import org.jboss.dmr.ModelNode;
import org.jboss.as.controller.client.ModelControllerClient;
ModelControllerClient client = ModelControllerClient.Factory.create("localhost", 9990);

// Create the operation request
ModelNode op = new ModelNode();

// Set the operation
op.get("operation").set("read-resource");

// Set the address
ModelNode address = op.get("address");
address.add("subsystem", "undertow");
address.add("server", "default-server");
address.add("http-listener", "default");

// Execute the operation and manipulate the result
ModelNode returnVal = client.execute(op);
System.out.println("Outcome: " + returnVal.get("outcome").toString());
System.out.println("Result: " + returnVal.get("result").toString());

// Close the client
client.close();
Copy to Clipboard Toggle word wrap

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat