第41章 リモートタスクの実行
41.1. リモートタスクの実行 リンクのコピーリンクがクリップボードにコピーされました!
タスクまたはビジネスロジックは直接 JBoss Data Grid サーバーで実行できるため、タスクの実行はデータに近く、クラスターのすべてのノードにあるリソースを使用します。
タスクを Java 実行可能ファイルにバンドルし、プログラミングで実行可能ファイルを実行できるサーバーインスタンスにデプロイすることができます。
41.2. リモートタスクの作成 リンクのコピーリンクがクリップボードにコピーされました!
リモート実行のタスクを作成するには、 org.infinispan.tasks.ServerTask
インターフェースを実装するクラスが含まれる .jar
ファイルを作成する必要があります。
実装には以下のメソッドが必要になります。
-
void setTaskContext(TaskContext taskContext)
: タスクコンテキストを設定します。このメソッドを使用して、キャッシュや必要なその他のリソースにアクセスします。 -
String getName()
: タスクに一意な名前を提供します。この名前はTaskManager
による実行に使用されます。
以下は実装の任意のメソッドになります。
-
TaskExecutionMethod getExecutionMode()
:TaskExecutionMode.ONE_NODE
のようにタスクが 1 つのノードで実行されるか、またはTaskExecutionMode.ALL_NODES
のようにすべてのノードで実行されるかを決定します。デフォルトでは 1 つのノードで実行されます。 -
Optional<String> getAllowedRole()
: ユーザーがタスクの実行に必要なロールを設定します。デフォルトでは追加のユーザーロールは設定されません。詳細は「リモートタスクの実行」を参照してください。 -
Set<String> getParameters()
: タスクに使用する名前付きパラメーターを指定します。
41.3. リモートタスクの例 リンクのコピーリンクがクリップボードにコピーされました!
以下には、org.infinispan.tasks.ServerTask
インターフェースを実装するクラスの例が含まれています。
41.4. リモートタスクのインストール リンクのコピーリンクがクリップボードにコピーされました!
リモートタスクを作成し、.jar
ファイルにバンドルしたら、以下のオプションの 1 つを使用して JBoss Data Grid サーバーインスタンスにデプロイできます。
オプション 1: deployments ディレクトリーへコピーする
.jar
ファイルを deployments/ ディレクトリーにコピーします。$] cp /path/to/sample_task.jar $JDG_HOME/standalone/deployments/
$] cp /path/to/sample_task.jar $JDG_HOME/standalone/deployments/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
オプション 2: CLI でコピーする
JBoss Data Grid サーバーに接続します。
[$JDG_HOME] $ bin/cli.sh --connect --controller=$IP:$PORT
[$JDG_HOME] $ bin/cli.sh --connect --controller=$IP:$PORT
Copy to Clipboard Copied! Toggle word wrap Toggle overflow .jar
ファイルをデプロイします。deploy /path/to/sample_task.jar
deploy /path/to/sample_task.jar
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記JBoss Data Grid がドメインモードである場合、
--all-server-groups
または--server-groups
パラメーターを使用してサーバーグループを市営する必要があります。
41.5. リモートタスクの削除 リンクのコピーリンクがクリップボードにコピーされました!
JBoss Data Grid の実行中のインスタンスからリモートタスクを削除するには、以下を行います。
JBoss Data Grid サーバーに接続します。
[$JDG_HOME] $ bin/cli.sh --connect --controller=$IP:$PORT
[$JDG_HOME] $ bin/cli.sh --connect --controller=$IP:$PORT
Copy to Clipboard Copied! Toggle word wrap Toggle overflow undeploy
コマンドを実行して.jar
ファイルを削除します。undeploy /path/to/sample_task.jar
undeploy /path/to/sample_task.jar
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記JBoss Data Grid がドメインモードである場合、
--all-server-groups
または--server-groups
パラメーターを使用してサーバーグループを市営する必要があります。
41.6. リモートタスクの実行 リンクのコピーリンクがクリップボードにコピーされました!
JBoss Data Grid サーバーで承認が有効になっている場合、 EXEC
パーミッションを持つユーザーのみがリモートタスクを実行できます。承認が有効になっていない場合は、すべてのユーザーがリモートタスクを実行できます。
リモートタスクには、getAllowedRole
メソッドで指定された追加のユーザーロールを付与することができます。この場合、ユーザーはそのロールに属さないとリモートタスクを実行できません。
以前デプロイしたタスクを実行するには、対象のキャッシュで execute(String taskName, Map parameters)
を呼び出します。
以下の例は、sampleTask
という名前のタスクを実行する方法を示しています。