【发布时间】:2011-06-02 00:55:08
【问题描述】:
我想通过使用用户可编辑的 Groovy scriptlet 来扩展我们的 Java 应用程序的脚本功能。
我的问题是 Java Scripting API 文档对 API 使用模式有点简洁。
所以我的用例是:有很多 Groovy 脚本(没有编码结构或对象,只是逐行的过程代码)需要在多线程环境中完全分离和隔离运行,它们被给出一些对象与绑定一起工作(因此应该可以在不同的输入参数上并行运行相同的脚本,并且我保证输入参数不是相同的对象实例)。而且我还想创建一些可以在每个脚本中使用的通用功能。
我的问题是:
- 我是否需要为每次执行创建一个新的 ScriptEngine 实例(通过 ScriptEngineManager 获取),或者一个 ScriptEngine 实例可用于所有执行?这是我非常关心的问题,即 ScriptEngine 实例(及其绑定)在并发使用下的行为方式。目前,我在每次执行期间使用具有不同绑定的 ScriptEngine.eval(Bindings)。
- 应该如何添加常用功能?如果我能以某种方式为所有脚本提供一些通用方法,那就没问题了。
- 有什么大问题吗?
我认为 Java API 的这一部分没有记录在案...
【问题讨论】: