20.12. サーバータスク


サーバータスクは、Java 言語で定義されるサーバー側のスクリプトです。サーバータスクを開発するには、infinispan-tasks-api モジュールで定義される org.infinispan.tasks.ServerTask インターフェースを拡張するクラスを定義する必要があります。

一般的なサーバータスクの実装では、以下のメソッドが実装されます。

  • setTaskContext は、サーバータスクが実行コンテキスト情報にアクセスできるようにします。これには、タスクパラメーター、実行されたタスクのキャッシュ参照などが含まれます。通常、実装者はこの情報をローカルに保存し、タスクが実際に実行されたときに使用します。
  • getName はタスクの一意の名前を返す必要があります。クライアントはこの名前を使用してタスクを呼び出します。
  • getExecutionMode は、N ノードのクラスターで 1 つのノードでタスクを呼び出すか、または N ノードで呼び出すかどうかを決定するために使用されます。たとえば、ストリーム処理を呼び出すサーバータスクは、クラスター内の 1 つのノードでのみ実行する必要があります。これは、ストリーム処理自体が、処理がクラスター内のすべてのノードに分散されるためです。
  • call は、ユーザーがサーバータスクを呼び出すときに呼び出されるメソッドです。

以下は、通知する人の名前として使用する hello greet タスクの例になります。

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

タスクが実装されたら、jar 内でラップする必要があります。その後、jar は Red Hat Data Grid Server にデプロイされます。Red Hat Data Grid Server は サービスローダーパターン を使用してタスクをロードするため、実装はこれらの要件に従う必要があります。たとえば、サーバータスクの実装にはゼロ引数のコンストラクターが必要です。

さらに、jar には jar に含まれるサーバータスクの完全修飾名が含まれる META-INF/services/org.infinispan.tasks.ServerTask ファイルが含まれている必要があります。以下に例を示します。

example.HelloTask
Copy to Clipboard Toggle word wrap

jar がパッケージ化された場合、次の手順として jar を Red Hat Data Grid Server にプッシュします。このサーバーは WildFly Application Server をサポートしているので、Maven Wildfly の Maven プラグイン をこれに使用できます。

<plugin>
   <groupId>org.wildfly.plugins</groupId>
   <artifactId>wildfly-maven-plugin</artifactId>
   <version>1.2.0.Final</version>
</plugin>
Copy to Clipboard Toggle word wrap

次に、コマンドラインから以下を呼び出します。

$ mvn package wildfly:deploy
Copy to Clipboard Toggle word wrap

Wildfly アプリケーションサーバーへのデプロイメントの他の方法も 説明 します。

タスクの実行は、以下のコードを使用して実行できます。

// Create a configuration for a locally-running server
ConfigurationBuilder builder = new ConfigurationBuilder();
builder.addServer().host("127.0.0.1").port(11222);

// Connect to the server
RemoteCacheManager cacheManager = new RemoteCacheManager(builder.build());

// Obtain the remote cache
RemoteCache<String, String> cache = cacheManager.getCache();

// Create task parameters
Map<String, String> parameters = new HashMap<>();
parameters.put("name", "developer");

// Execute task
String greet = cache.execute("hello-task", parameters);
System.out.println(greet);
Copy to Clipboard Toggle word wrap
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2026 Red Hat
トップに戻る