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

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

Expand
描述

attribute

执行 读-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.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
      }
      Copy to Clipboard Toggle word wrap

创建 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 标头不会改变端点如何处理对请求的响应。

流程

  1. 定义 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"}]}])
    Copy to Clipboard Toggle word wrap
    重要

    通过使用 write-attribute 操作,您将收到 重新加载必需 提示。

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

    reload
    Copy to Clipboard Toggle word wrap

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

验证步骤

  • 向 HTTP 管理接口发送请求:

    $ 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 标头。

以下 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}]}])
    Copy to Clipboard Toggle word wrap

    该命令生成以下 XML 配置:

    <management-interfaces>
        <http-interface security-realm="ManagementRealm">
            <http-upgrade enabled="true"/>
            <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
  • 要定义多个 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}]}])
    Copy to Clipboard Toggle word wrap
域模式
  • 要定义单个 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}]}])
    Copy to Clipboard Toggle word wrap

    该命令生成以下 XML 配置:

    <management-interfaces>
        <http-interface security-realm="ManagementRealm">
            <http-upgrade enabled="true"/>
            <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
  • 要定义多个 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}]}])
    Copy to Clipboard Toggle word wrap

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

// Create the management client
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