如何使用Graalvm沙盒Java

时间:2018-07-12 02:27:30

标签: graalvm

graal可以在创建上下文时对js,ruby和其他语言进行沙箱处理,但是如何对动态加载的jar进行沙箱处理呢?例如,当在flink中用作udf时,如何将自定义的上载jar沙盒化。

1 个答案:

答案 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/

[2] How should I load Jars dynamically at runtime?