zoukankan      html  css  js  c++  java
  • tomcat8源码之架构解析

    Catalina:与开始/关闭shell脚本交互的主类,因此如果要研究启动和关闭的过程,就从这个类开始看起。

    Engine:是整个servlet引擎,是一个容器,约等于Container,而不是整个容器,整个容器是Server,就是server.xml文件中的根节点。

    Server:是整个Tomcat组件的容器,包含一个或多个Service组件,它们相互独立,共享一个jvm和系统类库,一个service维护多个connector和container。 

    Service:Tomcat默认情况下指定Service的名称,值为Catalina。Service是包含Connector和Container的集合,Service用适当的Connector接收用户的请求,再发给相应的Container来处理。也维护mapper映射器和mapperlistener,同时维护着executor线程池组件,表示所有组件共享线程池,如果为空,则表示组件会自己创建线程池(如Endpoint),这样线程池不再共享。默认情况下Service节点不添加共享线程池,也就是各组件自己创建私有线程池。通过<Executor>节点添加线程池配置,或者通过executor属性添加。

    Connector:实现某一协议的连接器,如默认的有实现HTTP、HTTPS、AJP协议的,connector组件中maxconnections默认为maxthreads(也就是线程池的最大值),如果超过这个值,就等待。acceptCount是控制socket排队连接数,如果超过这个值,服务器将拒绝新的连接请求。因此服务器可以接受的请求总数为maxconnextions+acceptcount。

    Container:可以理解为处理某类型请求的容器,处理的方式一般为把处理请求的处理器包装为Valve对象,并按一定顺序放入类型为Pipeline的管道里。Container有多种子类型:Engine、Host、Context和Wrapper,这几种子类型Container依次包含,处理不同粒度的请求。另外Container里包含一些基础服务,如Loader、Manager和Realm。

    Engine:Engine包含Host和Context,接到请求后仍给相应的Host在相应的Context里处理。<Engine>节点中jvmRoute在启用session粘性时指定使用哪种负载均衡标识符,且必须唯一,它会追加在session标识符的尾部,也可以通过系统属性-DjvmRoute=ss指定,但是节点上的属性优先级更高。

    Host:就是我们所理解的虚拟主机。

    Context:就是我们所部属的具体Web应用的上下文,每个请求都在是相应的上下文里处理的。

    Wrapper:Wrapper是针对每个Servlet的Container,每个Servlet都有相应的Wrapper来管理。

    可以看出Server、Service、Connector、Container、Engine、Host、Context和Wrapper这些核心组件的作用范围是逐层递减,并逐层包含。

    下面就是些被Container所用的基础组件:

    Loader:是被Container用来载入各种所需的Class。

    Manager:是被Container用来管理Session池。

    Realm:是用来处理安全里授权与认证。

    对于以上的介绍,走马观花的扫一眼即可,等下文中出现相应组建时再回来温习一下。

    这里以http请求为例,当一个请求过来时我们可以简化为下图:




    这里只是说了些概念些的东西,不便于理解,下一篇我们通过一个简单的http请求来看一下具体的流转过程,比如ip地址,端口号,容器创建,servlet访问,返回信息获取等一系列的完整流程,好了这一篇先到这里。

    本文转自:https://blog.csdn.net/sduliding/article/details/75102042

  • 相关阅读:
    Linux 安装Zookeeper<集群版>(使用Mac远程访问)
    04寻找两个数组的中位数
    28实现strSTR()
    125验证回文串
    124,二叉树中的最大路径和
    123买卖股票的最佳时机III
    02爬取豆瓣最受欢迎的250部电影
    01爬取当当网500本五星好评书籍
    112买卖股票的最佳时机II
    121.买卖股票的最佳时机
  • 原文地址:https://www.cnblogs.com/nizuimeiabc1/p/8676326.html
Copyright © 2011-2022 走看看