码迷,mamicode.com
首页 > 其他好文 > 详细

Tomcat源码分析(1)-Tomcat整体架构

时间:2020-06-26 18:35:49      阅读:54      评论:0      收藏:0      [点我收藏+]

标签:com   接受   add   oid   需要   stand   str   处理   src   

一、整体说明

tomcat需要完成两件事情:

  • 接受外部HTTP请求
  • 加载servlet,并且把请求传给Servlet进行处理。

整体可以抽象为如下:

技术图片

 二、整体代码架构

在tomcat的代码中抽象了以下三个类:

  • Server类,代表tomcat实例
  • Connector类,代表HTTP监听器(上图中的HttpServer)
    • A "Connector" represents an endpoint by which requests are received
               and responses are returned
    •   多个connector代表监听后处理模式不同,比如bio,nio等。
  • Container类,代表Servlet容器

另外还抽象了一个Service类,用来包装Connector和Container类。

A "Service" is a collection of one or more "Connectors" that share
       a single "Container" Note:  A "Service" is not itself a "Container",
       so you may not define subcomponents such as "Valves" at this level

其中

  • 一个Server可以有多个Service【实际应用场景中,一般来说只有一个】,
  • 一个Service可以对应多个Connector【实际应用场景中,一般来说只有一个】,
  • 一个Service对于一个Container。

整体代码架构如下:

技术图片

上图中Connector监听到请求后最终把HTTP(TCP)请求转换成了Servlet请求传给Container。

三、Service类分析

tomcat中Service类的实现类是StandardService类

技术图片

 Service接口核心代码

public interface Service  {

    public Engine getContainer();

    public void setContainer(Engine engine);

    public Server getServer();

    public void setServer(Server server);


    public void addConnector(Connector connector);

    public Connector[] findConnectors();

    public void removeConnector(Connector connector);
   
}

 可以看到Service主要负责调度Connector和Container。

Tomcat源码分析(1)-Tomcat整体架构

标签:com   接受   add   oid   需要   stand   str   处理   src   

原文地址:https://www.cnblogs.com/Brake/p/13195723.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!