如何安全地重新加载服务器端的JavaScript函数?

时间:2016-10-31 21:24:45

标签: java nashorn

我正在试验Nashorn并从Java代码调用js函数。我有一个WatchService,它重新加载已更改的文件并重新评估ScriptEngine

engine.eval(Files.newBufferedReader(Paths.get(scriptFile), StandardCharsets.UTF_8));

它似乎运行得相当不错,但是,有几次我在javascript文件中保存了毫无疑问的拼写错误并随后尝试调用函数

invoker.invokeFunction("printServiceReport", tesla);

导致抛出javax.script.ScriptException,从而导致我的运行代码被终止。寻找一种可行的解决方案来实时重新加载逻辑,而不会对我的应用程序产生负面影响。

1 个答案:

答案 0 :(得分:1)

将每个代码文件的eval包装在try catch和invokes中。

如果需要,可以在重新加载时运行所有函数以查看是否发生错误 - 然后在发现错误时使用旧版本(如果在运行时检测到错误是不可接受的)。

当我们重新加载服务器端脚本时,我们会做类似的事情。