Web服务器:Tomcat学习系列:Tomcat内部组成(转载)

tlin82大约 2 分钟DevOps工具WebDevOps工具Tomcatjava开放框架

前言

看到一篇写的很好Tomcat组成,全文转载。

Tomcat作为一款Web服务器产品,主要有两个角色,ConnectorServlet

  • 一个是作为一个Http服务器,接收和响应Http请求,对应的是Tomcat的Connector组件;
  • 另一个则是Servlet容器,存储和处理所有应用的Servlet 实例,对应的是Tomcat的Web容器组件;

正文

Connector

当一个请求进来的时候,Connector负责解析请求信息,并封装成一个ServletRequest 对象,交给容器。

Connector由以下3个组件组成:

  • EndPoint, 监听 Socket 请求,实现Socket的接收和发送,是传输层的抽象,实现TCP/IP协议
  • Processor, 用来接收EndPoint传递过来的字节流,将字节流转化成Request,实现Http协议
  • Adapter, 适配器,这里主要是将Request适配成容器可接收的ServletRequest。

Servlet (Catalina容器)

Tomcat Architecture
Tomcat Architecture

Tomcat启动的时候就会创建Server 实例,其他实例是通过解析server.xml完成创建。

  • 一个Server实例包含多个Service实例,我的理解:例如按业务分Service

  • 一个Service实例包含多个connector实例和一个Container实例。我的理解:一个connector代表一个监听服务端口。例如:443,:8080

  • Container实例包含一个Engine实例,一个Engine实例可以有多个Host,

  • 一个Host就代表一个站点。例如:

abc.com
123.com
  • Context则表示一个 Web 应用。例如:
/orders
/products

一个站点下面可以有多个应用,Context对应就是webapp下的每个项目。

所以最终当一个请求进来的时候,Tomcat会通过连接器Coyote组件完成请求路径的解析,进而将请求交给Catalina容器去指定的对应的Servlet容器执行。

参考

浅谈Tomcat的体系结构open in new window