转载

Tomcat源码分析 (八)----- HTTP请求处理过程(一)

针对上述的类继承层级图,我们做如下说明:

  1. ajp和http11是两种不同的协议
  2. nio、nio2和apr是不同的通信方式
  3. 协议和通信方式可以相互组合。

ProtocolHandler 包含三个部件: EndpointProcessorAdapter

  1. Endpoint 用来处理底层Socket的网络连接, Processor 用于将 Endpoint 接收到的Socket封装成Request, Adapter 用于将Request交给Container进行具体的处理。
  2. Endpoint 由于是处理底层的Socket网络连接,因此 Endpoint 是用来实现 TCP/IP协议 的,而 Processor 用来实现 HTTP协议 的, Adapter 将请求适配到Servlet容器进行具体的处理。
  3. Endpoint 的抽象实现类AbstractEndpoint里面定义了 AcceptorAsyncTimeout 两个内部类和一个 Handler接口Acceptor 用于监听请求, AsyncTimeout 用于检查异步Request的超时, Handler 用于处理接收到的Socket,在内部调用 Processor 进行处理。

至此,我们已经明白了问题(1)、(2)和(3)。至于(4),当我们了解了Container自然就明白了,前面章节内容已经详细分析过了。

Connector源码分析入口

原文  http://www.cnblogs.com/java-chen-hao/p/11305207.html
正文到此结束
Loading...