坚持一下,把源码看完,勤奋一点,不要在懒惰了,你已经落下别人很多了
本文主要介绍Tomcat连接器Connector的协议处理ProtocolHandler
一、大体框架
1、ProtocolHandler
2、AbstractEndPoint
3、AbstractEndPoint.Handler
4、Processor
二、模块解析
Tomcat的Connector主要支持两种协议,一个是Ajp 一个是Http
每种协议提供三种实现方式,分别是Apr,Nio 和 JIo
Ajp:AJP是定向包协议。因为性能原因,使用二进制格式来传输可读性文本。WEB服务器通过TCP连接和SERVLET容器连接。为了减少进程生成socket的花费,WEB服务器和SERVLET容器之间尝试保持持久性的TCP连接,对多个请求/回复循环重用一个连接。一旦连接分配给一个特定的请求,在请求处理循环结束之前不会再分配。换句话说,在连接上,请求不是多元的。这个使连接两端的编码变得容易,虽然这导致在一时刻会有很多连接
JIo:Tomcat使用的是传统的Java I/O操作(即java.io包及其子包)。 默认的模式,性能最差,没有经过任何优化处理和支持。
NIo:java1.4及后续版本提供的一种新的I/O操作方式,Java nio是一个基于缓冲区、并能提供非阻塞I/O操作的Java API。拥有比传统I/O操作(bio)更好的并发运行性能.
Apr:apr(Apache Portable Runtime/Apache可移植运行时库),Tomcat将以JNI的形式调用Apache HTTP服务器的核心动态链接库来处理文件读取或网络传输操作,从而大大地提高Tomcat对静态文件的处理性能。从操作系统级别来解决异步的IO问题,大幅度的提高性能。 Tomcat apr也是在Tomcat上运行高并发应用的首选模式。