日期:2014-05-20  浏览次数:20585 次

类重新加载问题
我们知道JSP页面在WEB服务器上会被编译成class文件,如果修改JSP文件那么就会生成新的class文件。

但这些同样的class是如何被加载到服务器中的呢,一个ClassLoader只能加载一次同名类,而JAVA又没有卸载类的概念。

那么我是不是要在每生成一个新的同名class的时候都要定义一个新的不同的ClassLoader才能加载这个被修改过的类呢?

那么一些WEB服务器是如何做到的呢?

------解决方案--------------------
需要动态加载的类不能放到classpath里。
使用 java.net.URLClassLoader 手动载人
------解决方案--------------------
新创建一个 ClassLoader,然后 Thread.currentThread().setContextClassLoader();

Web 应用程序的主要的类加载器就是这个 ContextClassLoader。