这几天研究Tomcat,通过跟代码和调试代码的方式,基本弄明白了Tomcat启动到初始化好资源,等待连接,然后连接器把连接转交给容器的整个过程。研究过程比较艰辛,需要毅力;里面用到了很多反射的机制,昨天在想,到底组建出来的内存Heap是什么样子,不如吧Heap dump下来分析,通过分析,更加充分理解了Tomcat的模型。
Tomcat经典的模型是这样:
参考:http://blog.csdn.net/haitao111313/article/details/7717160
可以发现这样的模型:
我们知道一个Wrapper和一个Servlet相对应,执行到Wrapper对应的StandardWrapperValve(Piple和Valve阀)的时候,调用invoke方法,有
try {
if (!unavailable) {
servlet = wrapper.allocate();
}
这样一段代码,取得业务包的servlet,然后执行对应的业务逻辑。