Tomcat架构初识
整体架构
补充一下tomcat和jdk对应关系
规范JDK版本
6。X
7。X
8。X
8。5。X
9。X
JDK
5。0
6。0
7。0
7。0
8。0
Servlet
2。5
3。0
3。1
3。1
4。0
JSP
2。1
2。2
2。3
2。3
2。3
EL
2。1
2。2
3。0
3。0
3。0
WebSocket
NA
1。1
1。1
1。1
1。1
另外:Tomcat许可、完全免费、修改后不必公开源代码
整体结构如下:
Server:接受请求并解析,完成相关任务,返回处理结果。一个Server可以包含多个Service,每一个Service都是独立的,他们共享一个JVM以及系统类库。Service:负责维护多个Connector和一个Container(Engineer),这样来自Connector的请求只能有它所属的Service维护的Container处理。Connector:开启Socket并监听客户端请求,按照协议解析,配置对应的容器,通过socket返回响应Endpoint:监听SocketProcessorHandler:用于选择处理器,负责接受数据Processor:处理器CoyoteAdapter:请求映射Container:Engineer:servlet引擎Host:表示一个主机和域名有关Context:一个系统有对应的端口(webApp)Wrapper:servlet的包装类Mapper:维护映射关系MapperListener:mapper的监听器Excutor:一个线程池,给当前server所有的容器和connnector使用阻塞和非阻塞
Tomcat8有阻塞和非阻塞模式(tomcat8。5及之上的版本已经移除了IO模式)
server。xml种可以配置阻塞或者非阻塞模式
同时为了提高并发也可以开启线程池
我们可以使用jdk自带jconsole来查看下tomcat运行后的线程情况
没有开启线程池的情况
注释掉AJP并开启线程池
可以看到AJP的线程都已经不见了