tomcat源码分析大纲_Tomcat源码分析之Tomcat整体架构

3973472696f0a8ef17a187401efc905e.png

一、整体说明

tomcat需要完成两件事情:

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

整体可以抽象为如下:

b3090c9d919f36268779754c08437270.png

二、整体代码架构

在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。

整体代码架构如下:

其中

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

整体代码架构如下:

97ea6df1fa735bf6be85b0ad8472a0cf.png

上图中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。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值