graalvm - 如何使用 Graalvm 对 java 进行沙箱处理
问题描述
graal 可以在创建上下文时对 js、ruby 和其他语言进行沙箱处理,但是如何对动态加载的 jar 进行沙箱处理?例如,在 flink 中作为 udf 使用时如何对自定义上传的 jar 进行沙箱处理。
解决方案
Java 字节码目前无法使用 polygot API [1] 进行沙盒化。与任何其他 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/
推荐阅读
- symfony - symfony5 - composer udpate 后不工作(缓存问题)
- asp.net-mvc-5 - 强制 IIS 不模拟用户
- rust - 更改静态字符串值
- python - (Zabbix API)(Python 脚本)在任何历史记录中都找不到某些 itemid 的值(history_uint,history_string,...等)
- excel - 保护受 VBA 保护的 Excel 工作表中的徽标
- python - python继承:__init__(self,self)?
- css - 在 node_module 上看不到 bootstrap.min.css?
- c - 从父打印到子 c
- python - 在一定阈值后改变函数颜色
- rust - 如何重启一个底层节点