20.12. サーバータスク
サーバータスクは、Java 言語で定義されるサーバー側のスクリプトです。サーバータスクを開発するには、infinispan-tasks-api モジュールで定義される org.infinispan.tasks.ServerTask インターフェースを拡張するクラスを定義する必要があります。
一般的なサーバータスクの実装では、以下のメソッドが実装されます。
-
setTaskContextは、サーバータスクが実行コンテキスト情報にアクセスできるようにします。これには、タスクパラメーター、実行されたタスクのキャッシュ参照などが含まれます。通常、実装者はこの情報をローカルに保存し、タスクが実際に実行されたときに使用します。 -
getNameはタスクの一意の名前を返す必要があります。クライアントはこの名前を使用してタスクを呼び出します。 -
getExecutionModeは、N ノードのクラスターで 1 つのノードでタスクを呼び出すか、または N ノードで呼び出すかどうかを決定するために使用されます。たとえば、ストリーム処理を呼び出すサーバータスクは、クラスター内の 1 つのノードでのみ実行する必要があります。これは、ストリーム処理自体が、処理がクラスター内のすべてのノードに分散されるためです。 -
callは、ユーザーがサーバータスクを呼び出すときに呼び出されるメソッドです。
以下は、通知する人の名前として使用する hello greet タスクの例になります。
タスクが実装されたら、jar 内でラップする必要があります。その後、jar は Red Hat Data Grid Server にデプロイされます。Red Hat Data Grid Server は サービスローダーパターン を使用してタスクをロードするため、実装はこれらの要件に従う必要があります。たとえば、サーバータスクの実装にはゼロ引数のコンストラクターが必要です。
さらに、jar には jar に含まれるサーバータスクの完全修飾名が含まれる META-INF/services/org.infinispan.tasks.ServerTask ファイルが含まれている必要があります。以下に例を示します。
example.HelloTask
example.HelloTask
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>
<plugin>
<groupId>org.wildfly.plugins</groupId>
<artifactId>wildfly-maven-plugin</artifactId>
<version>1.2.0.Final</version>
</plugin>
次に、コマンドラインから以下を呼び出します。
mvn package wildfly:deploy
$ mvn package wildfly:deploy
Wildfly アプリケーションサーバーへのデプロイメントの他の方法も 説明 します。
タスクの実行は、以下のコードを使用して実行できます。