1

我是一名编程语言研究员,我正在使用动态创建/加载的类来实现多阶段元编程。

我正在考虑使用 tomcat 服务器来公开我的作品,所以我将编写一个 Servlet 来创建 Java 类并加载它们(大量)。

为了正确地对这些创建的类进行垃圾收集,必须对相应的类加载器进行垃圾收集。这是我作为 Servlet 编写者的责任还是 tomcat 框架的责任?如果不是 tomcat 框架的责任,这是一个开放的安全问题吗?

谢谢!

4

2 回答 2

1

Tomcat 在取消部署应用程序时取消引用 Web 应用程序类加载器及其从中创建的对象(servlet、过滤器、侦听器……)。这应该使 web 应用程序类加载器,它的所有类和对象都符合垃圾收集的条件(除非你有一个类加载器泄漏)。

我想到有两种可能性可以算作安全问题。首先,如果您有一个类加载器泄漏,一个 Web 应用程序可能会从另一个运行在同一 Tomcat 实例中的 Web 应用程序访问类。其次,如果您允许用户通过您的 Web 应用程序创建类,这显然会成为一个问题。

于 2013-10-20T22:21:28.013 回答
0

释放 ClassLoaders 由您决定。Tomcat 是一个 servlet 引擎,它不会干扰您的类加载或卸载。但仍不清楚这将如何成为安全问题。

于 2013-10-20T20:04:17.710 回答