13.2. 在 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
13.2.1. Data Grid Server 脚本 复制链接链接已复制到粘贴板!
数据网格服务器脚本基于 javax.script
API,兼容任何基于 JVM 的 ScriptEngine 实施。
您好世界
以下是在单一数据网格服务器上运行的简单示例,有一个参数,并使用 JavaScript:
// mode=local,language=javascript,parameters=[greetee] "Hello " + greetee
// mode=local,language=javascript,parameters=[greetee]
"Hello " + greetee
运行上述脚本时,您将传递一个 greetee
参数的值,Data Grid 则返回 "Hello ${value}"
。
13.2.1.1. 脚本元数据 复制链接链接已复制到粘贴板!
元数据提供有关 Data Grid 服务器在运行时使用的脚本的附加信息。
脚本元数据是 attribute=value
对,您添加到脚本第一行中的注释中,例如:
// name=test, language=javascript // mode=local, parameters=[a,b,c]
// name=test, language=javascript
// mode=local, parameters=[a,b,c]
-
使用符合脚本语言的评论样式(
//
、;;
、#
)。 -
使用逗号分隔
attribute=value
对。 - 使用单个(')或双引号字符分隔值。
属性 | Description |
---|---|
| 定义执行模式,并包含以下值:
仅限
|
| 指定执行脚本的脚本引擎。 |
| 指定文件名扩展,作为设置 ScriptEngine 的替代方法。 |
| 指定用户必须执行脚本的角色。 |
| 指定此脚本的有效参数名称的数组。指定此列表中不包含的参数的调用会导致异常。 |
| (可选)设置用于存储数据的 MediaType (MIME 类型)以及参数和返回值。此属性可用于仅用于支持特定数据格式的远程客户端。
目前,您只能设置 |
13.2.1.2. 脚本绑定 复制链接链接已复制到粘贴板!
数据网格将内部对象公开为脚本执行的绑定。
绑定 | Description |
---|---|
| 指定运行该脚本的缓存。 |
| 指定用于将数据序列化到缓存的 marshaller。 |
|
指定缓存的 |
| 指定运行该脚本的脚本管理器的实例。您可以使用此绑定从脚本运行其他脚本。 |
13.2.1.3. 脚本参数 复制链接链接已复制到粘贴板!
数据网格允许您将指定参数作为运行脚本的绑定传递。
参数是 name、value
对,其中 name
是一个字符串,value
是 marshaller 可以解释的任何值。
以下示例脚本有两个参数,分别是 multiplicand
和 multiplier
。该脚本取乘 的值并
乘以倍数乘以 倍数
。
// mode=local,language=javascript 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");
RemoteCache<String, String> scriptCache = cacheManager.getCache("___script_cache");
scriptCache.put("multiplication.js",
"// mode=local,language=javascript\n" +
"multiplicand * multiplier\n");