在Java中执行javascript代码的更快方法(sdk1.4)

时间:2010-07-15 18:28:32

标签: java javascript java-ee rhino

目前,我正在使用Rhino引擎在服务器端执行一些大块的javascript代码。但是,有时,它需要很长时间(超过10分钟)并占用所有CPU使用率(至少在我的本地开发环境中,它现在正在这样做)。

所以我想知道我能做些什么来改进当前的系统,或者我可以在那里尝试新的系统。

任何想法都会受到赞赏。

谢谢!

PLUS: 它在代码太大时抛出异常: java.lang.Exception:没有与当前线程相关联的上下文

3 个答案:

答案 0 :(得分:0)

您可以在运行脚本之前编译脚本并缓存已编译的版本 见http://download.oracle.com/docs/cd/E17409_01/javase/6/docs/api/javax/script/CompiledScript.html

(编辑:操作...我不知道这是否适用于sdk 1.4)

答案 1 :(得分:0)

我们首先要知道您正在执行的Javascript块有多大? 10行? 50行? 1000行?

如果它达到50+,那么也许编译会有所帮助。由于您使用的是1.4,因此必须使用官方Rhino发行版而不是javax.script。在这种情况下,只需使用rhino compiler

首先,你有没有想过你的程序?也许是导致这个问题的其他因素。

您确定您的算法尽可能高效吗?

在责备Rhino之前请考虑这些

答案 2 :(得分:0)

您是否从数据库动态生成整个javascript代码?也许你可以考虑编写一段修补代码,并用以下函数将数据填充到代码中:

        ScriptableObject.putProperty(scope, "out", out);
        ScriptableObject.putProperty(scope, "script", script);

然后你可以编译它,并将'scope'存储在某处并重用它。

使用最新版本的Rhino,它在发行版中总是有一个'jdk1.4'jar​​,使用它,也许它会有所帮助。