Поддерживает ли Google App Engine Java Script Engine?

1

Я хочу оценить динамический код JavaScript внутри среды выполнения Google App Engine.

Java имеет эту функцию, но хочу знать, поддерживается ли это также GAE.

Если вы можете предоставить простой код, вы будете очень благодарны, и если вы его используете, пожалуйста, поделитесь с ним комментариями, спасибо.

...

Поддержка GAE Языки скриптов, но по умолчанию служба "JavaScript" не регистрируется. Поэтому GAE из коробки не оценивает JavaScript.

Теги:
dynamic
google-app-engine

2 ответа

2
Лучший ответ

В прошлый раз, когда я попытался, хотя ScriptEngine включен в белый список, он недоступен в рабочей среде. Мне пришлось упаковать Rhino.jar вместе с моим приложением.

В примерах общего использования скриптов в Java вы можете напрямую ссылаться на документацию по Java.

Хотя, обратите внимание, что в среде GAE/J вам нужно будет напрямую обращаться к API-интерфейсам Rhino.

Например,

// 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));
  • 0
    Даже с банкой не работают. Так у вас не работает, не так ли?
  • 0
    Конечно, у меня это работает :) ... Я сейчас далеко от своей личной машины. Я поделюсь требуемым кодом, как только вернусь.
Показать ещё 1 комментарий
2

https://developers.google.com/appengine/docs/java/jrewhitelist включает javax.script.ScriptEngine в своих белых (разрешенных) API, поэтому да.

  • 0
    Да, но служба Rhino должна быть зарегистрирована, и я не могу найти способ добиться этого.
  • 0
    Хотя классы занесены в белый список, их функциональность ограничена. На вашем локальном компьютере ScriptEngineManager.getEngineFactories () вернет несколько различных движков. На App Engine он ничего не возвращает. Во многих примерах кода используется «ScriptEngineManager.getEngineByName (« JavaScript »)», но в App Engine вы просто получите нулевое возвращаемое значение. Я рекомендую вместо этого использовать Rhino.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню