gpt4 book ai didi

java - java webapp 中动态类加载的最佳方法?

转载 作者:行者123 更新时间:2023-12-01 04:12:45 25 4
gpt4 key购买 nike

我正在设计一个 Java Web 应用程序,该应用程序能够执行用户上传的自定义代码或预编译类,主要关注数据集的简单验证。自定义类必须限制为预定义的接口(interface),并且只有某些库和类必须可供自定义类使用。

我的第一个解决方案是使用能够从文件系统中定义的目录加载 .jar 文件的自定义类加载器。这种方法似乎有效,但我担心该解决方案的安全性和兼容性。

是否可以限制自定义类可以导入的类并在沙箱中运行代码以避免某些操作,例如打开文件或套接字?

加载的类什么时候会被卸载?

像 Weblogic 这样的应用程序服务器对于使用自定义类加载器有一些限制?

我已经评估了其他解决方案,例如 OSGi Bundles,但它看起来非常复杂,并且某些应用程序服务器的支持有限,而且我不确定 OSGi 是否是适合这种特定用途的正确技术。像 Groovy o Javascript 这样的嵌入式脚本语言被丢弃,因为项目所有者希望用 Java 预编译和编写自定义代码。

对于这个问题你有什么建议?

最佳答案

OSGi 非常适合希望接受外部代码(插件)的应用程序。您提到的所有要求(预定义接口(interface)、加载 jar、多个类加载器)都由 OSGi 服务和包管理涵盖。 bundle 可以安装、启动、停止、卸载等,包括在运行时。

Web 应用程序服务器中的 OSGi 支持不really that limited 。您甚至可以考虑embedding OSGi 框架。

在安全方面,您将需要一个围绕 security managers 的解决方案.

关于java - java webapp 中动态类加载的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19760391/

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