14.2. 在 Data Grid 服务器部署中添加脚本
使用命令行界面在 Data Grid 服务器中添加脚本。
先决条件
Data Grid 服务器将脚本存储在 ___script_cache 缓存中。如果启用缓存授权,用户必须具有 CREATE 权限才能添加到 ___script_cache 中。
如果您使用默认授权设置,请至少为用户分配 deployer 角色。
流程
根据需要定义脚本。
例如,创建一个名为
multiplication.js的文件,它在单一 Data Grid 服务器上运行,它有两个参数,并使用 JavaScript 乘以给定值:// mode=local,language=javascript multiplicand * multiplier- 创建与 Data Grid 的 CLI 连接。
使用
task命令上传脚本,如下例所示:task upload --file=multiplication.js multiplication验证您的脚本是否可用。
ls tasks multiplication
14.2.1. Data Grid 服务器脚本 复制链接链接已复制到粘贴板!
Data Grid 服务器脚本基于 javax.script API,并与任何基于 JVM 的 ScriptEngine 实施兼容。
您好世界
以下是在单个 Data Grid 服务器上运行的简单示例,具有一个参数,并使用 JavaScript:
// mode=local,language=javascript,parameters=[greetee]
"Hello " + greetee
运行前面的脚本时,您将传递 greetee 参数的值,Data Grid 返回 "Hello ${value}"。
14.2.1.1. 脚本元数据 复制链接链接已复制到粘贴板!
元数据提供有关在运行脚本时 Data Grid 服务器使用的脚本的附加信息。
脚本元数据是您添加到脚本第一行中的 property=value 对,如下例所示:
// name=test, language=javascript
// mode=local, parameters=[a,b,c]
-
使用与脚本语言匹配的注释样式(
//、;;,#)。 -
使用逗号分隔
property=value对。 - 使用单个(')或双引号(")分隔值。
| 属性 | 描述 |
|---|---|
|
| 定义执行模式,并具有以下值:
|
|
| 指定执行脚本的 ScriptEngine。 |
|
| 指定文件扩展作为设置 ScriptEngine 的替代方法。 |
|
| 指定用户必须执行脚本的角色。 |
|
| 指定此脚本的有效参数名称数组。调用指定此列表中未包含的参数会导致异常。 |
|
| (可选)设置 MediaType (MIME type)来存储数据以及参数和返回值。此属性对仅支持特定数据格式的远程客户端很有用。
目前,您只能设置 |
14.2.1.2. 脚本绑定 复制链接链接已复制到粘贴板!
Data Grid 将内部对象公开为脚本执行的绑定。
| 绑定 | 描述 |
|---|---|
|
| 指定运行脚本的缓存。 |
|
| 指定用于将数据序列化到缓存的 marshaller。 |
|
|
指定缓存的 |
|
| 指定运行脚本的脚本管理器的实例。您可以使用此绑定从脚本运行其他脚本。 |
14.2.1.3. 脚本参数 复制链接链接已复制到粘贴板!
Data Grid 可让您将命名参数传递为运行脚本的绑定。
参数是 name,value 对,其中 name 是一个字符串,value 是 marshaller 可以解释的任何值。
以下示例脚本有两个参数,即 multiplicand 和 multiplier。脚本采用 multiplicand 的值,并乘以它的值乘以 倍数。
// mode=local,language=javascript
multiplicand * multiplier
当您运行前面的脚本时,Data Grid 会响应表达式评估的结果。
14.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");