请问tomcat的reload功能是如何实现的?

03-10-23 kent
在tomcat中有一个reload功能,就是当新的类覆盖到原有的classes以后,系统会自动装入新类,那样一来,不需要重新启动web server,就可以正常工作。

我试了一下,用java.lang.ClassLoader类的defineClass()方法可以从文件或其他来源动态装入一个类,此方法返回一个Class。

可是这样一来,装入类好像只能用Class.newInstance()方法来产生一个实例。

而在程序中new一个实例还是调用旧的类?

哪位知道类似于tomcat的reload功能是如何实现的?

banq
2003-10-23 17:49
建议看一下源码,它是用一个监测器监测的。

iceant
2003-10-25 11:14
可能要 destroy 掉原来的 ClassLoader 换上新的 ClassLoader.

对于 JVM 来说, Class 的不同就是看它来自哪个 ClassLoader.

猜你喜欢