ps0604:
nashornライブラリ使用してjdk.nashorn.api.scripting.*
実装することができるものをClassFilter
Javaで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
ライブラリを、他に方法はありません