一、Tomcat介绍
Tomcat是一个Web服务器和servlet容器,主要运行Java web应用程序。
二、Tomc架构
骨架类图
1、http服务器
http服务器主要功能为网络编程(socket处理)、应用协议解析(tcp报文解析)。
网络编程由EndPoint类实现,支持的i/o模型有nio/bio,支持的应用层协议有http1.1,http1.2
,http 2.0等。
2、servlet容器
servlet容器会将请求转发给对应的servlet进行处理,
执行过程包括:
a.根据url定位servlet。
b.servlet执行业务代码进行处理。
3、热加载实现
tomcat通过定时任务判断加载的类文件或者静态资源文件是否改变(通过对比文件的最后修改时间),如果有改变,则会创建新的Context对象实现重新加载。对于java类文件重新加载需要创建新的类加载器。
4、tomcat如何实现多应用部署
每个应用对应一个Context对象,每个Context对象都有对应的WebAppClassLoader,应用对应的类由WebAppClassLoader加载,其破坏默认的双亲委派模型,加载顺序为:
a.本地cache & tomcat加载器缓存
b.bootStrapClassLoader -> $JAVA_HOME/lib
c.javaExtClassLoader -> $JAVA_HOME/ext/lib
d.SharedClassLoader & webappClassLoader -> tomcat共享目录和每个应用对应的目录下jar包
e. appClassLoader -> classpath下jar包。
5、tomcat 线程池优化
默认的线程池线程扩充策略是当任务队列满后,若当前线程数小于最大线程数,则创建新线程执行。
tomcat优化后策略是若当前线程数小于最大线程数,会立刻创建新线程执行。