谷歌应用程序引擎支持Java脚本引擎吗?

谷歌应用程序引擎支持Java脚本引擎吗?,java,javascript,google-app-engine,dynamic,Java,Javascript,Google App Engine,Dynamic,我希望在Google应用程序引擎运行时内动态评估JavaScript代码 Java有这个特性,但想知道GAE是否也支持这个特性 如果你能提供一个简单的代码将非常感谢,如果你使用它,请分享有关它的评论,谢谢 GAE支持脚本语言,但默认情况下不注册“JavaScript”服务。所以GAE开箱即用不评估JavaScript。在其白名单(允许的)API中包含javax.script.ScriptEngine,所以,是。在其白名单(允许的)API中包含javax.script.ScriptEngine,

我希望在Google应用程序引擎运行时内动态评估JavaScript代码

Java有这个特性,但想知道GAE是否也支持这个特性

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


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

在其白名单(允许的)API中包含javax.script.ScriptEngine,所以,是。

在其白名单(允许的)API中包含javax.script.ScriptEngine,所以,是。

上次我尝试时,虽然ScriptEngine是白名单,但它在生产环境中不可用。我不得不把这个软件和我的应用程序一起打包

有关Java中脚本的一般用法的示例,可以参考

不过,请注意,在GAE/J环境中,您需要直接调用RhinoAPI

比如说,

// 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));
//导入语句。
导入org.mozilla.javascript.Context;
导入org.mozilla.javascript.Scriptable;
私有对象ExecuteSingRhino(字符串脚本)引发异常
{
Context ctx=Context.enter();
尝试
{
Scriptable scope=ctx.initStandardObjects();
返回ctx.evaluateString(作用域,脚本,“”,1,null);
}
最后
{
Context.exit();
}
}
//使用以下代码段调用返回字符串输出的脚本
字符串输出=Context.toString(ExecuteSingRhino(脚本));

我上次尝试时,虽然ScriptEngine被列入了白名单,但它在生产环境中不可用。我不得不把这个软件和我的应用程序一起打包

有关Java中脚本的一般用法的示例,可以参考

不过,请注意,在GAE/J环境中,您需要直接调用RhinoAPI

比如说,

// 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));
//导入语句。
导入org.mozilla.javascript.Context;
导入org.mozilla.javascript.Scriptable;
私有对象ExecuteSingRhino(字符串脚本)引发异常
{
Context ctx=Context.enter();
尝试
{
Scriptable scope=ctx.initStandardObjects();
返回ctx.evaluateString(作用域,脚本,“”,1,null);
}
最后
{
Context.exit();
}
}
//使用以下代码段调用返回字符串输出的脚本
字符串输出=Context.toString(ExecuteSingRhino(脚本));

即使使用jar也无法工作。所以你没有让它运行,对吗?当然我让它运行:)。。。我现在不在我的个人电脑旁。我会在回来后分享所需的代码。对于最初的错误,我深表歉意。仅仅添加jar不起作用,您将需要直接使用rhinoapi。请检查原始答案,了解如何调用脚本。即使使用jar也不起作用。所以你没有让它运行,对吗?当然我让它运行:)。。。我现在不在我的个人电脑旁。我会在回来后分享所需的代码。对于最初的错误,我深表歉意。仅仅添加jar不起作用,您将需要直接使用rhinoapi。有关如何调用脚本的信息,请查看原始答案。是的,但是Rhino服务必须注册,我找不到实现它的方法。虽然这些类被列为白名单,但它们的功能有限。在本地计算机上,“ScriptEngineManager.getEngineFactories()”将返回多个不同的引擎。在应用程序引擎上,它不返回任何内容。许多代码示例使用“ScriptEngineManager.getEngineByName(“JavaScript”)”),但在AppEngine上,您只会返回null。我建议改用Rhino。是的,但是Rhino服务必须注册,我找不到实现它的方法。虽然这些类被列为白名单,但它们的功能是有限的。在本地计算机上,“ScriptEngineManager.getEngineFactories()”将返回多个不同的引擎。在应用程序引擎上,它不返回任何内容。许多代码示例使用“ScriptEngineManager.getEngineByName(“JavaScript”)”),但在AppEngine上,您只会返回null。我建议改用犀牛。