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
// mode=local,language=javascript multiplicand * multiplier
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 创建与 Data Grid 的 CLI 连接。
使用
task
命令上传脚本,如下例所示:task upload --file=multiplication.js multiplication
task upload --file=multiplication.js multiplication
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证您的脚本是否可用。
ls tasks multiplication
ls tasks multiplication
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
14.2.1. Data Grid 服务器脚本 复制链接链接已复制到粘贴板!
Data Grid 服务器脚本基于 javax.script
API,并与任何基于 JVM 的 ScriptEngine 实施兼容。
您好世界
以下是在单个 Data Grid 服务器上运行的简单示例,具有一个参数,并使用 JavaScript:
// mode=local,language=javascript,parameters=[greetee] "Hello " + greetee
// 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]
// 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
// 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");
RemoteCache<String, String> scriptCache = cacheManager.getCache("___script_cache");
scriptCache.put("multiplication.js",
"// mode=local,language=javascript\n" +
"multiplicand * multiplier\n");