我想在Google App Engine运行时内动态评估JavaScript代码。
Java有这个功能,但想知道GAE是否也支持这个功能。
如果您能提供简单的代码,我将非常感激,如果您使用它,请分享关于它的评论,谢谢。
...
GAE支持脚本语言,但默认情况下,“JavaScript”服务不是注册。所以GAE开箱即用不会评估JavaScript。
答案 0 :(得分:2)
https://developers.google.com/appengine/docs/java/jrewhitelist在其白名单(允许)API中包含javax.script.ScriptEngine,所以,是的。
答案 1 :(得分:2)
上次我尝试过,虽然ScriptEngine已列入白名单,但在生产环境中无法使用。我必须将Rhino.jar与我的应用程序一起打包。
有关Java中脚本编写的一般用法的示例,您可以参考Java documentation本身。
但请注意,在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));