【发布时间】:2016-07-26 01:18:41
【问题描述】:
我们想在一个 servlet 中使用 Nashorn。这个想法是使用在每个请求中重用的 ScriptEngine 的单例实例。在每次请求时,都会创建一个新的 EngineScope 绑定,并使用该绑定运行 eval。然后绑定被清除。没有共享对象被传递给绑定(只有来自 servlet 的请求/响应对象)。
在 servlet 中,ScriptEngine 的单例实例可能会在不同的线程中同时进行评估,这会正常工作还是会遇到线程问题?这是一些给出这个想法的代码:
ScriptEngine engine = getNashornSingleton();
ScriptContext newContext = new SimpleScriptContext();
newContext.setBindings(engine.createBindings(), ScriptContext.ENGINE_SCOPE);
Bindings engineScope =newContext.getBindings(ScriptContext.ENGINE_SCOPE);
engineScope.put("request", request);
engineScope.put("response", response);
engine.eval(jsCode, engineScope);
engineScope.clear();
【问题讨论】:
标签: multithreading servlets nashorn