【发布时间】:2011-12-07 18:18:50
【问题描述】:
以下是要求:
- Java EE Web 应用程序(在 Tomcat 中)...
- 非常简单,只有 JSP、servlet 和 jar - 没有框架...
- 无需重新加载,无需重新加载服务器,无需上下文,无需重新加载...
到目前为止,我们的想法是扩展 WebappClassLoader (catalina.jar) 以制作您自己的自定义类加载器,并将其作为 Loader 元素在 context.xml 中注册。用一些代码你可以很好地编写你的类加载器,谁会知道在哪里可以找到 java 源文件,然后在需要时将它们编译成类文件,然后在被要求时将它们加载到内存中。逻辑简单明了。
除了:
Jasper 将如何知道在哪里 - 自动 - 找到您的自定义类加载器生成的类,以便它可以编译引用它们的 JSP,甚至动态刷新它们(您的类)?是不可能实现的吗?
你怎么看?
(请不要试图通过指向许多确实为您处理此类事情的现有框架来分散对话。要求非常具体:没有框架,什么都没有)
【问题讨论】:
-
Jasper 的文档规定:“JDT 用于编译 JSP 页面 - Eclipse JDT Java 编译器现在用于执行 JSP java 源代码编译。此编译器从容器类加载器。Ant 和 javac 仍然可以使用。”。所以这个问题实际上是关于 "container classloader"!
-
容器类加载器是“org.apache.catalina.loader.StandardClassLoader”的一个实例。它是 Engine 的 类加载器。我没有看到任何明显的方法来覆盖/补充它以自动工作......
标签: jsp servlets classloader web-applications