在同一个JVM下有两个Context Factory实例

时间:2017-02-16 11:00:42

标签: javascript java jvm rhino

我正在使用Rhino来编译和执行javascript函数。为了限制脚本的执行时间,我创建了一个自定义ContextFactory,可以在调用observeInstructionCount之前设置允许的最大cpu时间和指令数,类似于{{ 3}}

以下代码是我用来编译和执行函数的方法的示例。

CustomFactory factory = new CustomFactory().setMaxCpuTime(300L);
if (!ContextFactory.hasExplicitGlobal()) {
            ContextFactory.initGlobal(factory );
}
Context context = factory.enterContext();
Scriptable Scope = context.initStandardObjects();
Function function = context.compileFunction(scope, script, "<func>", 0, null);
(...)
function.call(context, scope, scope, args);

每个东西都是例外,超过最大允许CPU时间的脚本会抛出错误。我的问题是我希望在同一个JVM下有两个我的自定义工厂实例,一个允许脚本比另一个运行一段时间更长的脚本。但由于调用 ContextFactory.initGlobal(factory),每个Context都将继承相同的ContextFactory。即使我创建了一个具有不同允许cpu时间的新自定义工厂,当我调用 factory.enterContext()时,上下文将继承传递给 initGlobal 的工厂。 / p>

有没有办法在同一个JVM下有两个ContextFactory实例(具有不同的属性)?

0 个答案:

没有答案