tomcat-容器

114 阅读1分钟

Tomcat是Servlet的容器、又称Web容器,用来解析Http报文转换为Servlet的Request对象;Servlet没有main方法,如果要执行,则需要在一个容器里面才能执行,Tomcat容器就是为了支持Servlet的功能而存在;

19411645946933_.pic.jpg

Server

  • Tomcat最顶层容器,整个Tomat最顶层容器

Service

  • Service组件相当于Connetor和Engine组件的包装器,它将一个或者多个Connector组件和一个Engine建立关联;
  • 配置线程池 executor

Connector

  • Connector正是Tomcat中监听TCP网络连接的组件;
  • Connector用于接受请求并将请求封装成Request和Response,然后交给Container进行处理,Container处理完之后在交给Connector返回给客户端;

Container

Engine

  • Container顶层,用来管理 Host
  • List < Host >
  • pipeline、List< valve >

Host

  • 代表一个虚拟主机,底下有多个应用,可通过name配置域名
  • List < Context >
  • pipeline、List< valve >

Context

  • 代表一个应用,底下有多个Servlet
  • List< Wrapper >
  • pipeline、List< valve >
  • 额外拥有load组件,保证不同应用之间加载隔离

Wrapper

  • 代表一个Servlet,底下有多个servlet对象
  • List< Servlet >
  • pipeline、List< valve >
Wrapper管道中最后一个Valve(basicValve)会执行调用Servlet逻辑
StandardWrapperValve#invoke
​
1. StandardWrapper#allocate 生成servlet对象,如:ServeletDemo extend HttpServlet;
2. 创建 过滤器链 filterChain;
3. 在过滤器中执行 HttpServlet#service;
4. 执行到自定义Servlet,如ServeletDemo#doGet
​
ServeletDemo为自己定义的业务Servlet