zoukankan      html  css  js  c++  java
  • Tomcat目录详解

           最近在项目部署时,有时通过使用公司提供的Jdoc容器引擎部署上线项目,有时使用Jenkins自动化部署,甚至有的项目直接打war包上传到弹性云的tomcat中进行部署。虽然部署方式略有不同,但是归根结底主要是将war包上传到服务器中的tomcat中进行部署。因此,最近忙里偷闲,关于tomcat的目录结构进行了一定的深挖和研究。

    Tomcat 顶层结构

             

           如上图所示,在Tomcat中最顶层的容器是Server,代表着整个服务器,在一个Tomcat中只有一个server容器,但是在这个Server可以包含至少一个Service,用于具体提供服务。Service主要包含两个部分:Connector和Container。其中Connector用于处理连接相关的事情,并提供Socket与Request和Response相关的转化;Container用于封装和管理Servlet,以及具体处理Request请求。

           因此,总结如下,在一个Tomcat中只有一个Server,一个Server可以包含多个Service,一个Service只有一个Container,但是可以有多个Connectors,这是因为一个服务可以有多个连接,如同时提供Http和Https链接,也可以提供向相同协议不同端口的连接,示意图如下。多个 Connector 和一个 Container 就形成了一个 Service,有了 Service 就可以对外提供服务了,但是 Service 还要一个生存的环境,那就是Server。因此Tomcat的生命周期由Server来控制。

          

    Connector架构分析

           Connector用于接受请求并将请求封装成Request和Response,然后交给Container进行处理,Container处理完之后在交给Connector返回给客户端。

           

      Connector就是使用ProtocolHandler来处理请求的,不同的ProtocolHandler代表不同的连接类型,比如:Http11Protocol使用的是普通Socket来连接的,Http11NioProtocol使用的是NioSocket来连接的。

      其中ProtocolHandler由包含了三个部件:Endpoint、Processor、Adapter。

      (1)Endpoint用来处理底层Socket的网络连接,Processor用于将Endpoint接收到的Socket封装成Request,Adapter用于将Request交给Container进行具体的处理。

      (2)Endpoint由于是处理底层的Socket网络连接,因此Endpoint是用来实现TCP/IP协议的,而Processor用来实现HTTP协议的,Adapter将请求适配到Servlet容器进行具体的处理。

      (3)Endpoint的抽象实现AbstractEndpoint里面定义的Acceptor和AsyncTimeout两个内部类和一个Handler接口。Acceptor用于监听请求,AsyncTimeout用于检查异步Request的超时,Handler用于处理接收到的Socket,在内部调用Processor进行处理。

    Container架构分析

           Container用于封装和管理Servlet,以及具体处理Request请求,在Connector内部包含了4个子容器,结构图如下:

       

        4个子容器的作用分别是:

      (1)Engine:引擎,用来管理多个站点,一个Service最多只能有一个Engine;

      (2)Host:代表一个站点,也可以叫虚拟主机,通过配置Host就可以添加站点;

      (3)Context:代表一个应用程序,对应着平时开发的一套程序,或者一个WEB-INF目录以及下面的web.xml文件;

      (4)Wrapper:每一Wrapper封装着一个Servlet;

    Tomcat的目录结构

          

      Tomcat的目录结构如上图所示,其中各个文件夹中存放的内容如下:

      /bin:存放windows或Linux平台上启动和关闭Tomcat的脚本文件

      /conf:存放Tomcat服务器的各种全局配置文件,其中最重要的是server.xml和web.xml

      /doc:存放Tomcat文档

      /lib:存放Tomcat服务器所需的各种JAR文件

      /logs:存放Tomcat执行时的日志文件

      /src:存放Tomcat的源代码

      /webapps:Tomcat的主要Web发布目录,默认情况下把Web应用文件放于此目录

      /work:存放JSP编译后产生的class文件

  • 相关阅读:
    应届毕业生简历撰写技巧
    【LeetCode】- Longest Substring Without Repeating Characters
    线性规划
    什么是凸规划
    最优化算法 (一)
    香农定理和频谱效率
    虚函数的用法
    QT学习一
    努力!
    Qslider
  • 原文地址:https://www.cnblogs.com/Demrystv/p/11426791.html
Copyright © 2011-2022 走看看