tomcat架构解析

1,033 阅读2分钟

目录结构

  • bin:执行目录,sh时linux上的,bat时windows上的
  • lib:依赖的jar包
  • conf:
    • catalina.plicy:权限相关perssiom,tomcat是跑在jvm上的,所以有些默认权限
    • server.xml:server节点--->service------>Executor线程池,Connector连接器
      • connector连接器里面使用线程池的话,connector里面的maxThread是无效的
      • executor:maxThreads如果不设置的话,默认为200
    • web.xml:serverlet的标准部署模式
      • DefaultServerlet:默认的 加载静态文件,html,js,img等静态文件
      • JspServlet:专门处理jsp
      • mime-mapping:文件类型,其实就是Tomcat处理文件类型
  • Logs:日志目录
    • localhost-xxx.log
    • catalina-xxx.log

三种部署方式

  • 显示部署:
    • server.xml的Host目录下面加入一个Contex(指定路径和文件地址)
    • 在conf/catalina/loalhost创建xml(热部署),访问路径为文件名
  • 隐式部署:放在webapps目录下面

Tomcat的架构

图片 1

两大核心组件:

Connector组件:连接器主要负责tomcat于客户端的连接

Container组件:servlet容器

image-20200623142216085

一个请求处理的流程

图片 1
  1. 用户点击网页内容,请求被发送到本机的8080,被在那里监听的Coyote HTTP/1.1 Connector获得。
  2. Connector把请求交给它所在的service的engine来处理,并等待engine返回
  3. engine获取请求localhost/test/index.jsp,匹配所有的虚拟主机Host
  4. engine匹配到名为localhost的host(即使匹配不到也把请求交给该host处理,因为该host被定义为engine的默认主机),名为loscalhost的host获取请求test/index.jsp,匹配它所应有的context,host匹配到路径为/test的Context(即使匹配不到就把该请求交给路径名为“”的处理)
  5. path为/test的Context获取到index.jsp的请求,在他的mapping table寻找出对应的servlet,context匹配到URL PATTERN为*.jsp的servlet对于的JspServlet
  6. 构造HttpServletRequest和HttpServletResponse对象,作为参数调用JspServlet的doGet()或者doPost(),执行业务逻辑、
  7. Context把执行完的HttpServletResponse返回会Host
  8. Host把HttpServletResponse返回给Engine
  9. Engine吧HttpServletResponse返回给Connector
  10. Connector把HttpServletResponse对象返回给客户Browser。

图片 1