针对上述的类继承层级图,我们做如下说明:
ProtocolHandler
包含三个部件: Endpoint
、 Processor
、 Adapter
。
Endpoint
用来处理底层Socket的网络连接, Processor
用于将 Endpoint
接收到的Socket封装成Request, Adapter
用于将Request交给Container进行具体的处理。 Endpoint
由于是处理底层的Socket网络连接,因此 Endpoint
是用来实现 TCP/IP协议
的,而 Processor
用来实现 HTTP协议
的, Adapter
将请求适配到Servlet容器进行具体的处理。 Endpoint
的抽象实现类AbstractEndpoint里面定义了 Acceptor
和 AsyncTimeout
两个内部类和一个 Handler接口
。 Acceptor
用于监听请求, AsyncTimeout
用于检查异步Request的超时, Handler
用于处理接收到的Socket,在内部调用 Processor
进行处理。 至此,我们已经明白了问题(1)、(2)和(3)。至于(4),当我们了解了Container自然就明白了,前面章节内容已经详细分析过了。