graal可以在创建上下文时对js,ruby和其他语言进行沙箱处理,但是如何对动态加载的jar进行沙箱处理呢?例如,当在flink中用作udf时,如何将自定义的上载jar沙盒化。
答案 0 :(得分:1)
当前无法使用polygot API [1]对Java字节码进行沙盒处理。像其他任何JDK一样,您可以通过创建新的类加载器[2]将jar沙盒化。
URLClassLoader child = new URLClassLoader(myJar.toURL(),
this.getClass().getClassLoader());
Class classToLoad = Class.forName("com.MyClass", true, child);
Method method = classToLoad.getDeclaredMethod("myMethod");
Object instance = classToLoad.newInstance();
Object result = method.invoke(instance);
[1] http://www.graalvm.org/docs/graalvm-as-a-platform/embed/