gpt4 book ai didi

java - 实现 Nashorn ClassFilter 等价物

转载 作者:搜寻专家 更新时间:2023-11-01 03:45:52 25 4
gpt4 key购买 nike

使用 nashorn 库 jdk.nashorn.api.scripting.* 可以实现 ClassFilter 接口(interface)来禁止在 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 bean 被注入(inject)到调用程序中,调用程序运行 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();
}
}

最佳答案

使用jdk.nashorn.api.scripting库,没有别的办法

关于java - 实现 Nashorn ClassFilter 等价物,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55659529/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com