13.2. Data Grid Server デプロイメントへのスクリプトの追加

コマンドラインインターフェイスを使用して、スクリプトを Data Grid Server に追加します。

前提条件

Data Grid Server は、___script_cache キャッシュにスクリプトを保存します。キャッシュ承認を有効にする場合、ユーザーは ___script_cache に追加するための CREATE パーミッションを持っている必要があります。

デフォルトの承認設定を使用する場合は、ユーザーに少なくとも deployer ロールを割り当てます。

手順

  1. 必要に応じてスクリプトを定義します。

    たとえば、単一の Data Grid サーバーで実行し、2 つのパラメーターを持ち、JavaScript を使用して指定の値を掛ける multiplication.js という名前のファイルを作成します。

    // mode=local,language=javascript
    multiplicand * multiplier
  2. Data Grid への CLI 接続を作成します。
  3. 以下の例のように、task コマンドを使用してスクリプトをアップロードします。

    task upload --file=multiplication.js multiplication
  4. スクリプトが利用可能であることを確認します。

    ls tasks
    multiplication

13.2.1. Data Grid Server スクリプト

Data Grid Server のスクリプトは javax.script API をベースとしており、JVM ベースの ScriptEngine 実装と互換性があります。

Hello world

以下は、1 つの Data Grid Server で実行され、1 つのパラメーターを持ち、JavaScript を使用する簡単な例です。

// mode=local,language=javascript,parameters=[greetee]
"Hello " + greetee

上記のスクリプトを実行するときに、greetee パラメーターの値を渡すと、Data Grid は "Hello ${value}" を返します。

13.2.1.1. スクリプトのメタデータ

メタデータは、スクリプトの実行時に Data Grid Server が使用するスクリプトの追加情報を提供します。

スクリプトメタデータは、スクリプトの最初の行でコメントを追加する property=value ペアです。以下に例を示します。

// name=test, language=javascript
// mode=local, parameters=[a,b,c]
  • スクリプト言語 (//, ;;, #) に一致するコメントスタイルを使用してください。
  • コンマで区切られた property=value ペア
  • 値は一重引用符 (') または二重引用符 (") で区切ります。

表13.1 メタデータプロパティー

プロパティー説明

モード

実行モードを定義し、以下の値を取ります。

local は、リクエストを処理するノードのみがスクリプトを実行します。ただし、スクリプトはクラスター化された操作を引き続き呼び出すことができます。

distributed Data Grid は、クラスター化されたエグゼキューターを使用してノード間でスクリプトを実行します。

言語

スクリプトを実行する ScriptEngine を指定します。

extension

ScriptEngine を設定する代替方法としてファイル名の拡張子を指定します。

role

ユーザーがスクリプトを実行する必要があるロールを指定します。

parameters

このスクリプトの有効なパラメーター名の配列を指定します。このリストに含まれていないパラメーターを指定する呼び出しによって例外が生じます。

datatype

オプションで、データおよびパラメーターおよび戻り値を保存する MediaType(MIME タイプ) を設定します。このプロパティーは、特定のデータフォーマットのみをサポートするリモートクライアントに便利です。

現在、データに String UTF-8 形式を使用するように、text/plain; charset=utf-8 のみを設定できます。

13.2.1.2. スクリプトバインディング

Data Grid は、内部オブジェクトをスクリプト実行のバインディングとして公開します。

バインディング説明

cache

スクリプトが実行されるキャッシュを指定します。

marshaller

データをキャッシュにシリアル化するために使用するマーシャラーを指定します。

cacheManager

キャッシュの cacheManager を指定します。

scriptingManager

スクリプトを実行するスクリプトマネージャーのインスタンスを指定します。このバインディングを使用して、スクリプトから他のスクリプトを実行することができます。

13.2.1.3. スクリプトのパラメーター

Data Grid を使用すると、スクリプトを実行するためのバインディングとして名前付きパラメーターを渡すことができます。

パラメーターは name,value のペアで、name は文字列、value はマーシャラーが解釈できる任意の値になります。

以下のスクリプトの例では、multiplicandmultiplier の 2 つのパラメーターがあります。このスクリプトは multiplicand の値を取り、その値を multiplier の値で乗算します。

// mode=local,language=javascript
multiplicand * multiplier

上記のスクリプトを実行すると、Data Grid は式の評価の結果で応答します。

13.2.2. プログラムでのスクリプトの作成

以下の例のように、Hot Rod RemoteCache インターフェイスを使用してスクリプトを追加します。

RemoteCache<String, String> scriptCache = cacheManager.getCache("___script_cache");
scriptCache.put("multiplication.js",
  "// mode=local,language=javascript\n" +
  "multiplicand * multiplier\n");