第7章 サーバー側のタスクをリモートで実行


Data Grid コマンドラインインターフェイス、REST API、または Hot Rod クライアントから呼び出すことができる Data Grid サーバーにタスクを定義して追加します。

カスタム Java クラスとしてタスクを実装するか、JavaScript などの言語でスクリプトを定義することができます。

7.1. サーバータスクの作成

カスタムタスクの実装を作成し、それらを Data Grid サーバーに追加します。

7.1.1. サーバータスク

Data Grid サーバータスクは、org.infinispan.tasks.ServerTask インターフェイスを拡張するクラスであり、一般的に以下のメソッド呼び出しが含まれます。

setTaskContext()
タスクパラメーター、タスクが実行されるキャッシュ参照などを含む実行コンテキスト情報へのアクセスを許可します。ほとんどの場合、実装はこの情報をローカルに保存し、タスクが実際に実行したときに使用します。
getName()
タスクの一意の名前を返します。クライアントはこれらの名前でタスクを呼び出します。
getExecutionMode()

タスクの実行モードを返します。

  • TaskExecutionMode.ONE_NODE は、要求を処理するノードのみがスクリプトを実行します。ただし、スクリプトはクラスター化された操作を引き続き呼び出すことができます。
  • TaskExecutionMode.ALL_NODES Data Grid は、クラスター化されたエグゼキューターを使用してノード間でスクリプトを実行します。たとえば、ストリーム処理はすべてのノードに分散されるため、ストリーム処理を呼び出したサーバータスクを 1 つのノードで実行する必要があります。
call()
結果を計算します。このメソッドは java.util.concurrent.Callable インターフェイス内で定義され、サーバータスクにより呼び出されます。
重要

サーバータスクの実装は、サービ出力ダーパターンの要件に準拠する必要があります。たとえば、実装にはゼロ引数のコンストラクターが必要です。

以下の HelloTask クラス実装は、1 つのパラメーターを持つタスクの例を提供します。

package example;

import org.infinispan.tasks.ServerTask;
import org.infinispan.tasks.TaskContext;

public class HelloTask implements ServerTask<String> {

   private TaskContext ctx;

   @Override
   public void setTaskContext(TaskContext ctx) {
      this.ctx = ctx;
   }

   @Override
   public String call() throws Exception {
      String name = (String) ctx.getParameters().get().get("name");
      return "Hello " + name;
   }

   @Override
   public String getName() {
      return "hello-task";
   }

}
Copy to Clipboard Toggle word wrap

7.1.2. サーバータスクの Data Grid サーバーへのデプロイメント

カスタムサーバーのタスククラスを Data Grid サーバーに追加します。

前提条件

実行中の Data Grid サーバーを停止します。Data Grid は、カスタムクラスのランタイムデプロイメントをサポートしません。

手順

  1. JAR ファイルでサーバータスクの実装をパッケージ化します。
  2. 以下のように、サーバーのタスクの完全修飾名が含まれる META-INF/services/org.infinispan.tasks.ServerTask ファイルを追加します。

    example.HelloTask
    Copy to Clipboard Toggle word wrap
  3. JAR ファイルを Data Grid サーバーの $RHDG_HOME/server/lib ディレクトリーにコピーします。
  4. クラスを Data Grid 設定のデシリアライズホワイトリストに追加します。または、システムプロパティーを使用してホワイトリストを設定します。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat