Nashorn ClassFilter同等の実装

ps0604:

nashornライブラリ使用してjdk.nashorn.api.scripting.*実装することができるものをClassFilterJavaでJavaScriptの実行中から無効にインスタンス化する任意のクラスへのインターフェイスを:

private static class NoJavaFilter implements ClassFilter {

    @Override
    public boolean exposeToScripts(String s) {
        return false;
    }
}

この作品のあなたがそうのようなエンジンを起動します。

NashornScriptEngineFactory factory = new NashornScriptEngineFactory();
ScriptEngine nashorn = factory.getScriptEngine(new NoJavaFilter());

しかし、私はビルトインのJava 8使用しているjavax.scriptライブラリを:

    ScriptEngineManager manager = new ScriptEngineManager();
    ScriptEngine engine = manager.getEngineByName("nashorn");

持っていないことをClassFilter、任意の考えはどのように同等のものを実装するには?

更新

このコードは、Wildfly 14 EJBコンテナで実行されます。JsUtils豆を実行呼び出しに注入されるrunパラメータとしてスクリプトを送信する方法。

@Stateless
public class JsUtils {

    public String run(String script) throws ScriptException,
                                            NoSuchMethodException {     

        ScriptEngineManager manager = new ScriptEngineManager();
        ScriptEngine engine = manager.getEngineByName("nashorn");                  
        Object result = engine.eval(script);
        return result.toString();
    }
}
ps0604:

使用するjdk.nashorn.api.scriptingライブラリを、他に方法はありません

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=192321&siteId=1