简单聊一下客户端请求Tomcat服务器的过程。首先了解一下Tomcat简易的架构图。
一、Tomcat架构图(简易)
- Tomcat中最顶层的容器是Server,代表着整个服务器,一个server至少含有一个service,其中service对外提供服务(即用来处理客户端发来的请求)。service容器的核心子容器是container和connector ,Connector用于处理连接相关的事情,并提供Socket与Request和Response相关的转化,而Container用于封装和管理Servlet,以及具体处理connector发来的Request。(注:一个service含有多个connector,多个connector的原因是因为一个服务可以有多个连接,如同时提供Http、Https、AJP、其他等协议的连接)
二、过程
- 上面提到Connector用于处理连接相关的事情,并提供Socket与Request和Response相关的转化 ,而做这些事情的主要是:ProtocolHandler(ProtocolHandler由包含了三个部件:Endpoint、Processor、Adapter)
- Endpoint用来处理底层Socket的网络连接(Acceptor接收到请求后,被交到Endpoint.Handler中,经过缓存加速,找到对应的Processor之后,交由Processor来处理)
- Processor处理请求中的相关业务,服务状态,协议解析,请求握手,内容解压等,构造适合Adapter处理request和response对象,然后调用Adater进行业务数据处理
- Adapter对请求进行业务数据处理(即将Request交给Container进行具体的处理),处理完成后交还给connector,并返回给客户端