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 に公開される raw 属性および値を表示します。
3.4.1.1. リソースの読み取り リンクのコピーリンクがクリップボードにコピーされました!
HTTP POST メソッドを使用して他の操作を読み取り、書き込み、および実行できますが、GET リクエストを使用すると一部の読み取り操作を実行できます。HTTP GET メソッドは以下の URL 形式を使用します。
http://HOST_NAME:9990/management/PATH_TO_RESOURCE?operation=OPERATION&PARAMETER=VALUE
置き換え可能な値は必ず適切な値に置き換えてください。置き換え可能な OPERATION の値は、以下の値に置き換えられます。
| Value | 説明 |
|---|---|
| attribute |
|
| operation-description |
|
| operation-names |
|
| resource |
|
| resource-description |
|
| snapshots |
|
以下の URL 例は、HTTP API を使用して読み取り操作を実行する方法を示しています。
- 例: リソースのすべての属性と値の読み取り
http://HOST_NAME:9990/management/subsystem/undertow/server/default-server/http-listener/default
これは、default HTTP リスナーのすべての属性とそれらの値を表示します。
デフォルトの操作は read-resource です。
- 例: リソースの属性値の読み取り
http://HOST_NAME:9990/management/subsystem/datasources/data-source/ExampleDS?operation=attribute&name=enabled
これは、ExampleDS データソースの enabled 属性の値を読み取ります。
3.4.1.2. リソースの更新 リンクのコピーリンクがクリップボードにコピーされました!
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.3. custom-constant HTTP ヘッダー リンクのコピーリンクがクリップボードにコピーされました!
JBoss EAP の HTTP 管理エンドポイントは、クライアントに送信されるすべての応答で事前定義された HTTP ヘッダーのセットを返します。この事前定義された HTTP ヘッダーのセットに加えて、custom-constant HTTP ヘッダーを定義できます。
JBoss EAP は、以下のように custom-constant HTTP ヘッダーをリクエストに適用します。
JBoss EAP は、リクエストパスに対して設定された接頭辞を照合して、custom-constant HTTP ヘッダーを適用します。
たとえば、
/や/managementなどのリクエストパスのリクエストに、custom-constant HTTP ヘッダーをマップできます。リクエストが複数の接頭辞に一致する場合、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 Transfer Protocol (HTTP/1.1): Semantics and Content でサポートされている文字のみを使用できます。
次の定義済み HTTP ヘッダーをオーバーライドすることはできません。
-
Connection -
Content-Length -
Content-Type -
Date Transfer-Encodingこれらの定義済みヘッダーのいずれかをオーバーライドしようとすると、エラーが発生します。
たとえば、
Dateという名前で custom-constant HTTP ヘッダーを設定しようとすると、次のエラーが返されます。{ "outcome" => "failed", "failure-description" => "WFLYCTL0458:Disallowed HTTP Header name 'Date'", "rolled-back" => true }
-
custom-constant HTTP ヘッダーを作成する際の重要な考慮事項:
- JBoss EAP は指定されたパスにアクセスできるかどうかを検証しません。
- サブシステムは、HTTP 管理インターフェイスがサポートするコンテキストを動的に追加できます。
- custom-constant HTTP ヘッダーは、エンドポイントがリクエストへの応答を処理する方法を変更しません。
3.4.1.4. custom-constant HTTP ヘッダーの定義 リンクのコピーリンクがクリップボードにコピーされました!
必要なパス接頭辞への各レスポンスで返される custom-constant HTTP ヘッダーを定義します。
custom-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"}]}])重要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:PASSWORDcustom-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.5. 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();