3.4. 관리 API
관리 API 엔드포인트는 관리 클라이언트가 JBoss EAP 관리 계층과 통합하기 위한 진입점 역할을 합니다.
3.4.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
교체 가능한 모든 값을 요청에 적합한 값으로 교체해야 합니다. 다음 값은 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 리스너의 모든 속성 및 해당 값이 표시됩니다.
기본 작업은 read-resource 입니다.
예: 리소스에 대한 특성 값 읽기
http://HOST_NAME:9990/management/subsystem/datasources/data-source/ExampleDS?operation=attribute&name=enabled
이렇게 하면 ExampleDS 데이터 소스에 대해 활성화된 속성 값이 표시됩니다.
리소스 업데이트
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"}'
이렇게 하면 ExampleDS 데이터 소스에 대한 enabled 속성 값이 false 로 업데이트됩니다.
예: 서버에 대한 작업 실행
$ 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는 다음과 같이 custom-constant HTTP 헤더를 요청에 적용합니다.
JBoss EAP는 요청 경로에 대해 구성된 접두사와 일치하여 custom-constant HTTP 헤더를 적용합니다.
예를 들어 custom-constant HTTP 헤더를
/또는/management와 같은 요청 경로의 요청에 매핑할 수 있습니다.요청이 여러 접두사와 일치하는 경우 JBoss EAP는 모든 매핑의 custom-constant HTTP 헤더를 적용합니다.
예를 들어 경로
/management에 대한 요청은 / 및모두에 대한 매핑과 일치합니다. JBoss EAP는 두 매핑의 헤더를 적용합니다./management요청이 끝나면 응답이 클라이언트로 반환되기 전에 해당 끝점에 의해 설정된 헤더를 덮어씁니다.
예를 들어 관리 끝점은 각 응답에서
X-Frame-Options헤더를 설정합니다. 이름이X-Frame-Options인 custom-constant HTTP 헤더를 정의하면 custom-constant HTTP 헤더가 기본 헤더를 덮어씁니다.
단일 매핑의 응답에서 반환되도록 여러 custom-constant HTTP 헤더를 정의할 수 있습니다.
다음은 custom-constant HTTP 헤더를 정의하는 규칙입니다.
- custom-constant HTTP 헤더는 RFC-7231 - Hypertext Transfer Protocol (HTTP/1.1): Semantics 및 Content에서 지원되는 문자만 포함할 수 있습니다.
다음과 같이 사전 정의된 HTTP 헤더를 덮어쓸 수 없습니다.
-
연결 -
콘텐츠 길이 -
content-Type -
날짜 transfer-Encoding이러한 사전 정의된 헤더를 재정의하려고 하면 오류가 발생합니다.
예를 들어 이름이
Date인 custom-constant HTTP 헤더를 설정하려고 하면 다음 오류가 반환됩니다.{ "outcome" => "failed", "failure-description" => "WFLYCTL0458:Disallowed HTTP Header name 'Date'", "rolled-back" => true }
-
사용자 정의 일치 HTTP 헤더를 생성할 때 중요한 고려 사항:
- JBoss EAP는 지정된 경로에 연결할 수 있는지 여부를 확인하지 않습니다.
- 하위 시스템은 HTTP 관리 인터페이스에서 지원하는 컨텍스트를 동적으로 추가할 수 있습니다.
- custom-constant HTTP 헤더는 끝점이 요청에 대한 응답을 처리하는 방법을 변경하지 않습니다.
3.4.1.2. custom-constant HTTP 헤더 정의 링크 복사링크가 클립보드에 복사되었습니다!
필요한 경로 접두사의 모든 응답에서 반환되는 custom-constant HTTP 헤더를 정의합니다.
사용자 정의 일치 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"}]}])중요write-attribute작업을 사용하면reload-required프롬프트가 열립니다.변경 사항을 적용하려면 서버를 다시 로드합니다.
reloadHTTP 관리 인터페이스에 대한 요청은 사전 정의된 HTTP 헤더 세트 외에 HEADER_VALUE 값을 사용하여 HTTP 헤더 HEADER_NAME 을 반환합니다.
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"}]}])
검증 단계
HTTP 관리 인터페이스로 요청을 보냅니다.
curl -s -D - -o /dev/null --digest http://localhost:9990/management/ -u USERNAME:PASSWORD예제 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응답에는
X-Helpcustom-constant HTTP 헤더가 포함됩니다.
3.4.1.3. custom-constant HTTP 헤더를 정의하는 CLI 명령 링크 복사링크가 클립보드에 복사되었습니다!
다음 CLI 명령은 독립 실행형 및 관리형 도메인 모드로 custom-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}]}])이 명령을 실행하면 다음과 같은 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>여러 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}]}])
도메인 모드
단일 custom-constant 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}]}])이 명령을 실행하면 다음과 같은 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>여러 custom-constant 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}]}])
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();