Tomcat整体架构

2020-05-27  本文已影响0人  renmen2000

一、tomcat需要的核心功能

二、tomcat两大核心组件

三、 tomcat支持的IO模型与协议

四、tomcat总体架构

Tomcat 设计了 4 种容器,分别是 Engine、Host、Context 和 Wrapper。这 4 种容器是父子关系。这种分层的架构,使得 Servlet 容器具有很好的灵活性。

Engine上面tomcat总体架构图里的Service里的容器就是Engine,一个Service最多一个Engine

Host代表一个虚拟主机,可以给tomcat配置多个虚拟主机地址

Context代表一个web应用,一个Host下可以有多个web应用

Wrapper就是一个Servlet一个web应用下可以有多个servlet
下面通过tomcat server.xml的配置图说明进一步加深了解

server-xml.jpg

tomcat如何管理容器

这些容器具有父子关系,形成一个树形结构,你可能马上就想到了设计模式中的组合模式

没错,Tomcat 就是用组合模式来管理这些容器的。

public interface Container extends Lifecycle {
    public void setName(String name);
    public Container getParent();
    public void setParent(Container container);
    public void addChild(Container child);
    public void removeChild(Container child);
    public Container findChild(String name);
}

public interface Valve {
  public Valve getNext();
  public void setNext(Valve valve);
  public void invoke(Request request, Response response)
}

注意代码中的setNext和getNext将多个处理点连接起来组成链表,invoke方法是执行具体的处理点

Pipeline

public interface Pipeline extends Contained {
  public void addValve(Valve valve);
  public Valve getBasic();
  public void setBasic(Valve valve);
  public Valve getFirst();
}
// Calling the container
connector.getService().getContainer().getPipeline().getFirst().invoke(request, response);

补充说明

Wrapper 容器的最后一个 Valve 会创建一个 Filter 链,并调用 doFilter 方法,最终会调到 Servlet 的 service 方法。

Valve与Filter区别

上一篇 下一篇

猜你喜欢

热点阅读