1

我想在 Google App Engine 运行时动态评估 JavaScript 代码。

Java 有这个功能,但想知道 GAE 是否也支持这个功能。

如果您能提供一个简单的代码将非常感激,如果您使用它,请分享评论,谢谢。

...

GAE 支持脚本语言,但默认情况下未注册“JavaScript”服务。所以开箱即用的 GAE 不会评估 JavaScript。

4

2 回答 2

2

https://developers.google.com/appengine/docs/java/jrewhitelist在其列入白名单(允许)的 API 中包含 javax.script.ScriptEngine,所以,是的。

于 2013-11-06T22:16:50.280 回答
2

上次我试过,虽然ScriptEngine被列入白名单,但在生产环境中不可用。我必须将Rhino.jar与我的应用程序一起打包。

有关 Java 中脚本的一般用法示例,您可以参考Java 文档本身。

但请注意,在 GAE/J 环境中,您需要直接调用 Rhino API。

例如,

// Import statements.
import org.mozilla.javascript.Context;
import org.mozilla.javascript.Scriptable;

private Object executeUsingRhino(String script) throws Exception
{
    Context ctx = Context.enter();
    try
    {
        Scriptable scope = ctx.initStandardObjects();
        return ctx.evaluateString(scope, script, "<cmd>", 1, null);
    }
    finally
    {
        Context.exit();
    }
}


// Invoke a script that returns a string output using the following code snippet
String output = Context.toString(executeUsingRhino(script));
于 2013-11-07T04:40:04.230 回答