【发布时间】:2018-06-25 16:08:32
【问题描述】:
下面的代码在 Play (2.5) for Scala 控制器中执行 Nashorn/Javascript 脚本。我注入一个类来获取运行脚本的引擎。
我在网上进行了研究,关于 Nashorn 的线程安全性意见不一,所以我不清楚。下面的 getEngine 方法是从 Play 控制器调用的,线程安全吗?
@Singleton
class JavascriptEngine {
val factory = new NashornScriptEngineFactory
def getEngine = { // <-- thread safe?
factory.getScriptEngine()
}
}
class Test @Inject()(je: JavascriptEngine) extends Controller {
def test = Action { request =>
val script = "var x = 'this is script 1'; "
runJS(script)
Ok("some response")
}
def runJS (script: String) = {
val engine = je.getEngine
engine.eval(script)
val x = engine.get("x")
println(x)
}
}
【问题讨论】:
标签: scala playframework nashorn playframework-2.5