第3章 リクエストの作成および実行
JBoss EAP の設定は、アドレス可能なリソースの階層ツリーとして示され、アドレス可能なリソースはそれぞれ独自の操作セットを提供します。管理 CLI 操作のリクエストによって、管理モデルとの低レベルな対話が可能になり、制御された状態でサーバー設定を編集する方法を提供します。
操作リクエストは以下の書式を使用します。
/NODE_TYPE=NODE_NAME:OPERATION_NAME(PARAMETER_NAME=PARAMETER_VALUE)
/NODE_TYPE=NODE_NAME:OPERATION_NAME(PARAMETER_NAME=PARAMETER_VALUE)
操作リクエストは 3 つの部分で構成されます。
- アドレス
-
アドレスは、操作を実行するリソースノードを指定します。NODE_TYPE は要素名にマップし、NODE_NAME は設定 XML にあるその要素の
name属性にマップします。リソースツリーの各レベルは、スラッシュ (/) によって区切られます。 - 操作名
-
リソースノードで実行する操作。コロン (
:) が最初に付けられます。 - パラメーター
-
操作によって異なる必須または任意のパラメーターのセット。これらのパラメーターはかっこ (
()) で囲まれます。
操作リクエストの作成
アドレスの特定
XML 設定ファイル (
standalone.xml、domain.xml、またはhost.xml) を参照すると、必要なアドレスを特定するのに便利です。タブ補完を使用して、利用できるアドレスを表示することもできます。ルート (
/) レベルにあるリソースの一般的なアドレスは次のとおりです。-
/deployment=DEPLOYMENT_NAME- デプロイメントの設定。 -
/socket-binding-group=SOCKET_BINDING_GROUP_NAME- ソケットバインディングの設定。 -
/interface=INTERFACE_NAME- インターフェースの設定。 -
/subsystem=SUBSYSTEM_NAME- スタンドアロンサーバー実行時のサブシステム設定。 -
/profile=PROFILE_NAME/subsystem=SUBSYSTEM_NAME- 管理対象ドメイン実行時の選択したプロファイルのサブシステム設定。 -
/host=HOST_NAME- 管理対象ドメイン実行時に選択したホストのサーバー設定。
以下は、
ExampleDSデータソースのアドレスになります。/subsystem=datasources/data-source=ExampleDS
/subsystem=datasources/data-source=ExampleDSCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
操作の特定
利用できる操作は、各型のリソースノードによって異なります。リソースアドレス上で
:read-operation-names操作を使用すると、利用可能な操作を表示できます。また、タブ補完を使用することも可能です。リソースに対する特定操作の情報を取得するには、
:read-operation-description操作を使用します。以下の操作は (適切なパラメーターが含まれた場合)、
ExampleDSデータソースの属性の値を設定します。/subsystem=datasources/data-source=ExampleDS:write-attribute
/subsystem=datasources/data-source=ExampleDS:write-attributeCopy to Clipboard Copied! Toggle word wrap Toggle overflow パラメーターの特定
各操作には利用できる独自のパラメータのセットがあります。必要なパラメーターを指定せずに操作を実行しようとすると、パラメーターを
nullにできないという内容のエラーメッセージが表示されます。複数のパラメーターはコンマ (
,) で区切られます。操作にパラメーターがない場合、かっこは任意となります。:read-operation-description操作をリソースで使用し、操作名を渡してその操作に必要なパラメーターを特定します。また、タブ補完を使用して利用できるパラメーターを表示することもできます。以下の操作は、
enabled属性をfalseに設定して、ExampleDSデータソースを無効にします。/subsystem=datasources/data-source=ExampleDS:write-attribute(name=enabled,value=false)
/subsystem=datasources/data-source=ExampleDS:write-attribute(name=enabled,value=false)Copy to Clipboard Copied! Toggle word wrap Toggle overflow
入力後、管理インターフェースはサーバー設定で操作リクエストを実行します。操作のリクエストに応じて、操作の出力と結果、または応答が含まれる出力がターミナルに表示されます。
ExampleDS データソースの無効化に対する以下の応答は、操作に成功し、操作の反映にサーバーのリロードが必要であることを表しています。
read-attribute 操作を使用すると、ExampleDS データソースの enabled 属性の値を読み取りできます。
/subsystem=datasources/data-source=ExampleDS:read-attribute(name=enabled)
/subsystem=datasources/data-source=ExampleDS:read-attribute(name=enabled)
以下の応答は、操作に成功し、enabled の値が false であることを表しています。
{
"outcome" => "success",
"result" => false,
}
{
"outcome" => "success",
"result" => false,
}
3.1. リソース値の表示 リンクのコピーリンクがクリップボードにコピーされました!
read-resource 操作を使用して、リソースの属性値を表示できます。
:read-resource
:read-resource
パラメーターを指定して、子リソースに関する完全情報を再帰的に提供することができます。また、パラメーターを指定して、ランタイム属性の追加、式の解決、およびエイリアスの追加を行うこともできます。read-operation-description(name=read-resource) を使用すると、read-resource に使用できるすべてのパラメーターの説明を表示できます。
以下の例は、デプロイメントの属性を読み取ります。これには、デプロイメント名、有効あるいは無効であるか、最後に有効になった時間などの詳細が含まれます。
ランタイム属性の追加
include-runtime パラメーターを使用するとランタイム属性を取得できます。
以下の例は、デプロイメントの属性を読み取ります。永続属性の他に、デプロイメントの状態や最後に無効になった時間などのランタイム属性も含まれます。
また、ブール値パラメータに渡すときに not 演算子 (!) を使用することもできます。
-
:read-resource(include-runtime=false)を:read-resource(!include-runtime)と入力できます。 -
:read-resource(include-runtime=true)は:read-resource(include-runtime)と入力できます。
子リソースの再帰的な読み取り
recursive パラメーターを使用すると、子リソースから再帰的に属性を読み出しできます。
以下の例は、デプロイメントの属性を読み取ります。リソース独自の属性の他に、undertow サブシステムなどの子リソースの属性を再帰的に返します。
デフォルト値の除外
include-defaults パラメーターを使用するとリソースの属性の読み取り時にデフォルト値を表示または非表示するにすることができます。デフォルトは true で、 read-resource 操作の使用時にデフォルト値が表示されます。
以下の例は、undertow サブシステムで read-resource 操作を使用します。
以下の例も、undertow サブシステムで read-resource 操作を使用しますが、include-defaults パラメーターを false に設定します。この例では、statistics-enabled や default-server などの複数の属性がデフォルト値ではなく undefined を表示します。
式の解決
resolve-expressions パラメーターを使用すると、返された属性の式をサーバーの値に解決することができます。
式を値として持つ属性は、${PARAMETER:DEFAULT_VALUE} という形式を使用します。詳細は、『設定ガイド』の「プロパティーの置換」を参照してください。
以下の例は、デプロイメントの属性を読み取ります。instance-id 属性は、式 (${jboss.node.name}) ではなく、解決された値 (test-name) を表示します。
3.2. リソースの詳細表示 リンクのコピーリンクがクリップボードにコピーされました!
read-resource-description 操作を使用すると、リソースおよびその属性に関する詳細を表示できます。
:read-resource-description
:read-resource-description
パラメータを指定して、子リソースに関する完全詳細を再帰的に提供することができます。また、パラメーターを指定して、リソースの操作および通知の詳細を含めることもできます。read-operation-description(name=read-resource-description) を使用すると、read-resource-description に使用できるすべてのパラメーターの詳細を表示できます。
以下の例は、バッファーキャッシュの属性の詳細を表示します。
属性に対して返されたフィールドの詳細については、「リソース属性の詳細」を参照してください。
3.3. 属性値の表示 リンクのコピーリンクがクリップボードにコピーされました!
read-attribute 操作を使用すると、1 つの属性の現在の値を表示できます。
:read-attribute(name=ATTRIBUTE_NAME)
:read-attribute(name=ATTRIBUTE_NAME)
以下の例は、level 属性を読み取って、ルートロガーのログレベルを表示します。
/subsystem=logging/root-logger=ROOT:read-attribute(name=level)
{
"outcome" => "success",
"result" => "INFO"
}
/subsystem=logging/root-logger=ROOT:read-attribute(name=level)
{
"outcome" => "success",
"result" => "INFO"
}
read-attribute 操作を使用する利点の 1 つは、属性の現在のランタイム値を公開できることです。
/interface=public:read-attribute(name=resolved-address)
{
"outcome" => "success",
"result" => "127.0.0.1"
}
/interface=public:read-attribute(name=resolved-address)
{
"outcome" => "success",
"result" => "127.0.0.1"
}
resolved-address 属性はランタイム属性です。この属性は、include-runtime パラメーターに渡さないと、read-resource 操作の使用時に表示されません。表示された場合でも、リソースの他の属性とともに表示されます。
include-defaults および resolve-expressions パラメーターを使用することもできます。これらのパラメーターに関する詳細は、「リソース値の表示」を参照してください。
3.4. 属性の更新 リンクのコピーリンクがクリップボードにコピーされました!
write-attribute 操作を使用して、リソースの属性の値を更新できます。
:write-attribute(name=ATTRIBUTE_NAME, value=ATTRIBUTE_VALUE)
:write-attribute(name=ATTRIBUTE_NAME, value=ATTRIBUTE_VALUE)
以下の例は、scan-enabled 属性を false に設定して、デプロイメントスキャナーを無効にします。
/subsystem=deployment-scanner/scanner=default:write-attribute(name=scan-enabled,value=false)
{"outcome" => "success"}
/subsystem=deployment-scanner/scanner=default:write-attribute(name=scan-enabled,value=false)
{"outcome" => "success"}
操作リクエストからの応答は、この操作が成功したことを表しています。また、read-attribute 操作を使用して scan-enabled 属性を読み取り (現在は false と表示)、結果を確認することもできます。
/subsystem=deployment-scanner/scanner=default:read-attribute(name=scan-enabled)
{
"outcome" => "success",
"result" => false
}
/subsystem=deployment-scanner/scanner=default:read-attribute(name=scan-enabled)
{
"outcome" => "success",
"result" => false
}
3.5. 属性の定義削除 リンクのコピーリンクがクリップボードにコピーされました!
属性の値を undefined に設定できます。この属性にデフォルト値がある場合、デフォルト値が使用されます。
以下の例は、ルートロガーの level 属性の定義を削除します。
/subsystem=logging/root-logger=ROOT:undefine-attribute(name=level)
/subsystem=logging/root-logger=ROOT:undefine-attribute(name=level)
level 属性のデフォルト値は ALL です。read-resource 操作の実行時に、このデフォルトの使用を確認できます。
デフォルト値を読み取らずにリソースを表示するには、include-defaults パラメーターを false に設定する必要があります。そうすると、level の値が undefined になります。
3.6. 操作名の表示 リンクのコピーリンクがクリップボードにコピーされました!
read-operation-names を使用すると、指定のリソースで使用できる操作を一覧表示できます。
:read-operation-names
:read-operation-names
以下の例は、デプロイメントで実行できる操作の一覧を表示します。
read-operation-description 操作を使用して 操作の詳細を表示します。
3.7. 操作の詳細表示 リンクのコピーリンクがクリップボードにコピーされました!
read-operation-description 操作を使用すると、リソースの特定操作の詳細を表示できます。これには、パラメーターの説明と必須のパラメーターが含まれます。
:read-operation-description(name=OPERATION_NAME)
:read-operation-description(name=OPERATION_NAME)
以下の例は、システムプロパティーにおける add 操作の詳細およびパラメーター情報を提供します。
3.8. 特殊文字を用いた値の追加 リンクのコピーリンクがクリップボードにコピーされました!
管理 CLI リクエストの作成時、特殊文字が含まれる値を追加する必要があることがあります。管理 CLI リクエストの構文に使われる特殊文字などの一部の特殊文字は、特定の方法で入力する必要があります。
多くの場合、値を二重引用符 ("") を囲めば適切に処理されます。使用する特殊文字が許可されるプロパティーであるかどうか分からない場合は、値を追加した後に属性またはリソースを読み取り、適切に保存されたことを確認してください。
以下の特殊文字の処理方法は、該当する項を参照してください。
空白文字
デフォルトでは、空白は管理 CLI で追加された値から取り除かれます。値に空白が含まれるようにするには、値を二重引用符 ("") または中かっこ ({}) で囲むか、バックスラッシュ (\) を使ってエスケープ処理します。
/system-property=test1:add(value="Hello World")
/system-property=test2:add(value={Hello World})
/system-property=test3:add(value=Hello\ World)
/system-property=test1:add(value="Hello World")
/system-property=test2:add(value={Hello World})
/system-property=test3:add(value=Hello\ World)
これにより、値が Hello World に設定されます。
引用符
値で単一引用符 (') を使用するには、値を二重引用符 ("") で囲むか、バックスラッシュ (\) を使用してエスケープ処理します。以下の例は、システムプロパティーの値を server's に設定します。
/system-property=test1:add(value="server's") /system-property=test2:add(value=server\'s)
/system-property=test1:add(value="server's")
/system-property=test2:add(value=server\'s)
値で二重引用符 (") を使用するには、バックスラッシュ (\) を使用してエスケープ処理します。引用符の場所によっては、さらに二重引用符 ("") で値を囲む必要がある場合もあります。以下の例は、システムプロパティーの値を "quote" に設定します。
/system-property=test1:add(value="\"quote\"")
/system-property=test1:add(value="\"quote\"")
コンマ
値でコンマ (,) を使用するには、値を二重引用符 ("") で囲みます。
/system-property=test:add(value="Last,First")
/system-property=test:add(value="Last,First")
これにより、値が Last,First に設定されます。
かっこ
値にかっこ (()) が含まれるようにするには、値を二重引用符 ("") または中かっこ ({}) で囲むか、バックスラッシュ (\) を使ってエスケープ処理します。
/system-property=test1:add(value="one(1)")
/system-property=test2:add(value={one(1)})
/system-property=test3:add(value=one\(1\))
/system-property=test1:add(value="one(1)")
/system-property=test2:add(value={one(1)})
/system-property=test3:add(value=one\(1\))
これにより、値が one(1) に設定されます。
中かっこ
値に中かっこ ({}) が含まれるようにするには、値を二重引用符 ("") で囲みます。
/system-property=test:add(value="{braces}")
/system-property=test:add(value="{braces}")
これにより、値が {braces} に設定されます。
角かっこ
値に角かっこ ([]) が含まれるようにするには、値を二重引用符 ("") で囲みます。
/system-property=test:add(value="[brackets]")
/system-property=test:add(value="[brackets]")
これにより、値が [brackets] に設定されます。
発音区別符号
ñ、ř、ý などの発音区別符号は、管理 CLI を使用して値を追加するときに使用できます。
/system-property=test1:add(value=Año)
/system-property=test1:add(value=Año)
ただし、値は二重引用符 ("") で囲まないでください。二重引用符で囲むと、発音区別符号が疑問符 (?) に置き換えられます。値に空白文字が含まれる場合は、中かっこ ({}) で値を囲むか、バックスラッシュ (\) を使ってエスケープ処理します。
/system-property=test2:add(value={Dos años})
/system-property=test3:add(value=Dos\ años)
/system-property=test2:add(value={Dos años})
/system-property=test3:add(value=Dos\ años)
これにより、値が Dos años に設定されます。
3.9. 操作ヘッダーの指定 リンクのコピーリンクがクリップボードにコピーされました!
操作ヘッダーを指定すると、操作実行方法の特定の内容を制御することができます。以下の操作ヘッダーを使用することができます。
allow-resource-service-restart操作の変更を反映するために、再起動な必要なランタイムサービスを再起動するかどうか。デフォルトは
falseです。警告allow-resource-service-restart=trueヘッダーを使用すると、必要なサービスが再起動するまでエンドユーザーリクエストの処理が中断される可能性があります。blocking-timeout-
操作がロールバックされる前に、操作の完了プロセス中の任意の時点で操作がブロックする最大時間 (秒単位)。デフォルトは
300秒です。 roles- 操作を呼び出すユーザーに通常関連付けられるロールの代わりに、アクセス制御の決定時に使用される RBAC ロールのリスト。これは、呼び出し側のパーミッションを減らす場合のみ使用され、増やす場合には使用されないことに注意してください。
rollback-on-runtime-failure-
永続化設定の変更をランタイムサービスに適用できなかった場合に、設定の変更を元に戻すかどうか。デフォルトは
trueです。 rollout- 管理対象ドメインのデプロイメントのロールアウト計画。詳細は、JBoss EAP『設定ガイド』の「ロールアウト計画の使用」を参照してください。
例: 操作ヘッダーを使用したアプリケーションのデプロイメント
deploy /path/to/deployment.war --headers={allow-resource-service-restart=true}
deploy /path/to/deployment.war --headers={allow-resource-service-restart=true}
例: 操作ヘッダーを使用したリソースの削除
/subsystem=infinispan/cache-container=test:remove() {allow-resource-service-restart=true}
/subsystem=infinispan/cache-container=test:remove() {allow-resource-service-restart=true}
セミコロン(;) を使用して複数の操作ヘッダーを区切ります。
3.10. if-else 制御フローの使用 リンクのコピーリンクがクリップボードにコピーされました!
管理 CLI は、条件を基にして実行するコマンドおよび操作のセットを選択可能にする if-else 制御フローをサポートします。if 条件は、of キーワードの後に指定された管理コマンドまたは操作の応答を評価するブール式です。
入れ子の if-else ステートメントの使用はサポートされません。
以下の項目をどれでも式に含めることができます。
- 式をグループ化および優先付けするかっこ
条件演算子
-
および (and) (
&&) -
または (or) (
||)
-
および (and) (
比較演算子
-
等しい (
==) -
等しくない (
!=) -
より大きい (
>) -
より大きいまたは等しい (
>=) -
より小さい (
<) -
より小さいまたは等しい (
<=) -
正規表現と一致 (
~=)
-
等しい (
正規表現と一致 (~=) の演算子はテクノロジープレビューとしてのみ提供されます。テクノロジープレビューの機能は、Red Hat の本番環境のサービスレベルアグリーメント (SLA) ではサポートされず、機能的に完全ではないことがあるため、Red Hat は本番環境での使用は推奨しません。テクノロジープレビューの機能は、最新の技術をいち早く提供して、開発段階で機能のテストやフィードバックの収集を可能にするために提供されます。
テクノロジープレビュー機能のサポート範囲については、Red Hat カスタマーポータルの「テクノロジプレビュー機能のサポート範囲」を参照してください。
以下は、正規表現と一致 (~=) の演算子を使用して、features システムプロパティーの値に jgroups が含まれるかどうかをチェックします。
if (result ~= ".*jgroups.*") of /:resolve-expression(expression=${features})
echo Configuring JGroups
end-if
if (result ~= ".*jgroups.*") of /:resolve-expression(expression=${features})
echo Configuring JGroups
end-if
以下の例は、システムプロパティー test の読み取りを試みます。outcome が success でない場合 (プロパティーが存在しないことを意味します)、システムプロパティーが追加され、true に設定されます。
if (outcome != success) of /system-property=test:read-resource
/system-property=test:add(value=true)
end-if
if (outcome != success) of /system-property=test:read-resource
/system-property=test:add(value=true)
end-if
上記の条件は、outcome を使用します。これは、以下のように of キーワードの後の CLI コマンドが実行されると返されます。
以下の例は、サーバープロセスの起動型 (STANDALONE または DOMAIN) をチェックし、適切な管理 CLI コマンドを実行して ExampleDS データソースを有効にします。
if (result == STANDALONE) of /:read-attribute(name=launch-type)
/subsystem=datasources/data-source=ExampleDS:write-attribute(name=enabled, value=true)
else
/profile=full/subsystem=datasources/data-source=ExampleDS:write-attribute(name=enabled, value=true)
end-if
if (result == STANDALONE) of /:read-attribute(name=launch-type)
/subsystem=datasources/data-source=ExampleDS:write-attribute(name=enabled, value=true)
else
/profile=full/subsystem=datasources/data-source=ExampleDS:write-attribute(name=enabled, value=true)
end-if
if-else 制御フローを使用する管理 CLI コマンドをファイルに指定することができ、ファイルには各コマンドを各行に個別に指定します。ファイルを jboss-cli スクリプトに渡すと、--file パラメーターを使用して非対話的に実行されます。
EAP_HOME/bin/jboss-cli.sh --connect --file=CLI_FILE
$ EAP_HOME/bin/jboss-cli.sh --connect --file=CLI_FILE
3.11. try-catch-finally 制御フローの使用 リンクのコピーリンクがクリップボードにコピーされました!
管理 CLI は簡単な try-catch-finally 制御フローを提供します。これは、try、catch、および finally ブロックに対応する 3 つの操作およびコマンドのセットで構成されます。catch および finally ブロックは任意ですが、最低でも 1 つが存在するべきで、1 つの catch ブロックのみを指定できます。
制御フローは try バッチの実行で始まります。try バッチが正常に完了すると、catch バッチはスキップされ、finally バッチが実行されます。java.io.IOException などが原因で try バッチが失敗すると、try-catch-finally 制御フローは即座に終了します。利用できる場合は catch バッチが実行されます。finally バッチは、try および catch バッチの実行に成功または失敗に関わらず、制御フロードサイドに実行されます。
try-catch-finally 制御フローを定義するコマンドは 4 つあります。
-
tryコマンドはtryバッチを開始します。tryバッチは、catchまたはfinallyコマンドの 1 つが実行されるまで継続されます。 -
catchコマンドはtryバッチの最後を示します。tryバッチは引き止められ、catchバッチが開始されます。 -
finallyコマンドはcatchバッチまたはtryバッチの最後を示し、finallyバッチを開始します。 -
end-tryはcatchまたはfinallyバッチを終了し、try-catch-finally 制御フローを実行するコマンドです。
以下の例はデータソースを作成または再作成し、有効化します。
3.12. リソースのクエリー リンクのコピーリンクがクリップボードにコピーされました!
JBoss EAP 管理 CLI は、query 操作を提供してリソースをクエリーします。:read-resource 操作を使用して、リソースのすべての属性を読み取りできます。選択された属性のみを一覧表示するには、:query 操作を使用します。
たとえば、name および enabled 属性のリストを表示するには、以下のコマンドを実行します。
/deployment=jboss-modules.jar:query(select=["name","enabled"])
/deployment=jboss-modules.jar:query(select=["name","enabled"])
以下の応答は操作の成功を表しています。name および enabled 属性は jboss-modules.jar デプロイメントに対して表示されています。
ワイルドカードを使用すると、すべてのデプロイメントの name および enabled 属性の表示など、複数のリソース全体でクエリーを制御できます。
/deployment=*:query(select=["name","enabled"])
/deployment=*:query(select=["name","enabled"])
以下の応答は、操作に成功したことを表しています。すべてのデプロイメントの name および enabled 属性が一覧表示されています。
:query 操作は、関連するオブジェクトもフィルターします。たとえば、 enabled が true である、デプロイメントの name および enabled 属性値を表示します。
/deployment=*:query(select=["name","enabled"],where=["enabled","true"])
/deployment=*:query(select=["name","enabled"],where=["enabled","true"])
以下の応答は、操作に成功したことを表しています。enabled が true である、デプロイメントの name および enabled 属性値が表示されます。