第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_NODESData Grid は、クラスター化されたエグゼキューターを使用してノード間でスクリプトを実行します。たとえば、ストリーム処理はすべてのノードに分散されるため、ストリーム処理を呼び出したサーバータスクを 1 つのノードで実行する必要があります。
-
call()-
結果を計算します。このメソッドは
java.util.concurrent.Callableインターフェイス内で定義され、サーバータスクにより呼び出されます。
サーバータスクの実装は、サービ出力ダーパターンの要件に準拠する必要があります。たとえば、実装にはゼロ引数のコンストラクターが必要です。
以下の HelloTask クラス実装は、1 つのパラメーターを持つタスクの例を提供します。
7.1.2. サーバータスクの Data Grid サーバーへのデプロイメント リンクのコピーリンクがクリップボードにコピーされました!
カスタムサーバーのタスククラスを Data Grid サーバーに追加します。
前提条件
実行中の Data Grid サーバーを停止します。Data Grid は、カスタムクラスのランタイムデプロイメントをサポートしません。
手順
- JAR ファイルでサーバータスクの実装をパッケージ化します。
以下のように、サーバーのタスクの完全修飾名が含まれる
META-INF/services/org.infinispan.tasks.ServerTaskファイルを追加します。example.HelloTask
example.HelloTaskCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
JAR ファイルを Data Grid サーバーの
$RHDG_HOME/server/libディレクトリーにコピーします。 - クラスを Data Grid 設定のデシリアライズホワイトリストに追加します。または、システムプロパティーを使用してホワイトリストを設定します。