Tomcat系列(3)——Tomcat 组件及架构核心部分

1.架构图

  

2. 定义  

  Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,它早期的名称为catalina,后来由Apache、Sun 和其他一些公司及个人共同开发而成,并更名为Tomcat。Tomcat 是一个小型的轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选,因为Tomcat 技术先进、性能稳定,成为目前比较流行的Web 应用服务器。Tomcat是应用(java)服务器,它只是一个servlet容器,是Apache的扩展,但它是独立运行的。

最本质上讲,tomcat为一个jsp/servlet容器

3. 组件 

1. 顶级组件

  Server:表示一个Tomcat实例 (单例的);Server代表整个catalina servlet容器;包含一个或多个service子容器。主要是用来管理容器下各个Serivce组件的生命周期。

  Service:代表Tomcat中一组提供服务、处理请求的组件。是一个分组结构,包括多个Connector和一个Container。

2. 连接器

  Connector是客户端连接到Tomcat容器的服务点,它为引擎提供协议服务来将引擎与客户端各种协议隔离开来,如HTTP、HTTPS、AJP协议。Connector的基本属性都是它所需要监听的IP地址及端口号,以及所支持的协议。还有一个关键属性就是并发处理传入请求的最大线程数。注意,Connector关键的有 连接器(HTTP   HTTPS   HTTP1.1   AJP    SSL  proxy) 运行模式(BIO  NIO  NIO2/AIO  APR)多线程/线程池

3. 容器组件

  Container是容器的父接口,用于封装和管理Servlet,以及具体处理Request请求,该容器的设计用的是典型的责任链的设计模式,它由四个自容器组件构成,分别是Engine、Host、Context、Wrapper。这四个组件是负责关系,存在包含关系。只包含一个引擎。

     Engine 引擎:表示可运行的Catalina的servlet引擎实例,并且包含了servlet容器的核心功能。在一个服务中只能有一个引擎。同时,作为一个真正的容器,Engine元素之下可以包含一个或多个虚拟主机。它主要功能是将传入请求委托给适当的虚拟主机处理。如果根据名称没有找到可处理的虚拟主机,那么将根据默认的Host来判断该由哪个虚拟主机处理。

  Host 虚拟主机:作用就是运行多个应用,它负责安装和展开这些应用,并且标识这个应用以便能够区分它们。它的子容器通常是 Context。一个虚拟主机下都可以部署一个或者多个Web App,每个Web App对应于一个Context,当Host获得一个请求时,将把该请求匹配到某个Context上,然后把该请求交给该Context来处理。主机组件类似于Apache中的虚拟主机,但在Tomcat中只支持基于FQDN(完全合格的主机名)的“虚拟主机”。Host主要用来解析web.xml。

  Context上下文;代表 Servlet 的 Context,它具备了 Servlet 运行的基本环境,它表示Web应用程序本身。Context 最重要的功能就是管理它里面的 Servlet 实例,一个Context对应于一个Web Application,一个Web Application由一个或者多个Servlet实例组成。

  Wrapper包装器: 代表一个 Servlet,它负责管理一个 Servlet,包括的 Servlet 的装载、初始化、执行以及资源回收。Wrapper 是最底层的容器,它没有子容器了,所以调用它的 addChild 将会报错。

4. 嵌套组件

    Valve阀门:类似于Servlet规范中定义的过滤器,用来拦截请求并在将其转至目标之前进行某种处理操作。Valve可以定义在任何容器类的组件中。Valve常被用来记录客户端请求、客户端IP地址和服务器等信息,这种处理技术通常被称作请求转储(request dumping)。请求转储valve记录请求客户端请求数据包中的HTTP首部信息和cookie信息文件中,响应转储valve则记录响应数据包首部信息和cookie信息至文件中。

  Logger日志记录器:用于记录组件内部的状态信息,可被用于除Context之外的任何容器中。日志记录的功能可被继承,因此,一个引擎级别的Logger将会记录引擎内部所有组件相关的信息,除非某内部组件定义了自己的Logger组件。

  Loader类加载器:负责加载、解释Java类编译后的字节码。

    Realm领域:用于用户的认证和授权;在配置一个应用程序时,管理员可以为每个资源或资源组定义角色及权限,而这些访问控制功能的生效需要通过Realm来实现。Realm的认证可以基于文本文件、数据库表、LDAP服务等来实现。Realm的效用会遍及整个引擎或顶级容器,因此,一个容器内的所有应用程序将共享用户资源。同时,Realm可以被其所在组件的子组件继承,也可以被子组件中定义的Realm所覆盖。

  Excutor执行器:执行器组件允许您配置一个共享的线程池,以供您的连接器使用。从tomcat 6.0.11版本开始。

  Listener监听器:监听已注册组件的生命周期。

  Manager会话管理器:用于实现http会话管理的功能,tomcat6种有5种会话管理的manager的实现(standardManager、persisentManager、DeltaManager、BackupManager、SimpleTcpReplicationManager)。会话让使用无状态HTTP协议的应用程序完成通信。会话表示客户端和服务器之间的通信,会话功能是由javax.servlet.http.HttpSession 的实例实现的,该实例存储在服务器上而且与一个唯一的标识符相关联,客户端在与服务器的每次交互中根据请求中的标识符找到它的会话。一个新的会话在客户端请求后被创建,会话一直有效直到一段时间后客户端连接超时,或者会话直接失效例如客户退出访问服务器。

  Cluster集群:专用于配置Tomcat集群的元素,可用于Engine和Host容器中。

  架构好处: 1. 便于组件生命周期的管理; 2.  简化配置,允许子容器继承父容器的配置。    

  

 

参考网址

  1. 四张图带你了解Tomcat系统架构
  2. 深入理解 Tomcat (二) 从宏观上理解 Tomcat 组件及架构
  3. Tomcat 架构 (一)
  4. https://hub.packtpub.com/overview-tomcat-6-servlet-container-part-1/
  5. Tomcat架构(二)
  6. https://www.packtpub.com/books/content/overview-tomcat-6-servlet-container-part-1
  7. Tomcat架构(三)
  8. https://www.packtpub.com/books/content/overview-tomcat-6-servlet-container-part-2
  9. Tomcat架构(四)
  10. Tomcat 架构分析(一) 体系结构
  11. Tomcat运行过程和简单模拟
  12. tomcat-架构原理
  13. Tomcat 面试题汇总
  14. 【面试总结】--tomcat调优方案
  15. Tomcat类加载机制和JAVA类加载机制的比较
  16. Tomcat的类加载机制
  17. 深入理解Tomcat(五)类加载机制
  18. 深入理解 Tomcat(四)Tomcat 类加载器之为何违背双亲委派模型
  19. tomcat架构
  20. 图解Tomcat类加载机制(阿里面试题)
  21. Java虚拟机工作原理详解
  22. Tomcat安装、配置、优化及负载均衡详解
  23. 8月前端面试题
  24. Tomcat常见面试题你都知道答案吗?

原文地址:https://www.cnblogs.com/haimishasha/p/10738951.html

时间: 2024-07-30 22:19:53

Tomcat系列(3)——Tomcat 组件及架构核心部分的相关文章

Tomcat系列(6)——Tomcat处理一个HTTP请求的过程

Tomcat的架构图   图三:Tomcat Server处理一个HTTP请求的过程 处理HTTP请求过程 1.用户点击网页内容,请求被发送到本机端口8080,被在那里监听的Coyote HTTP/1.1 Connector获得. 2.Connector把该请求交给它所在的Service的Engine来处理,并等待Engine的回应. 3.Engine获得请求localhost/test/index.jsp,匹配所有的虚拟主机Host. 4.Engine匹配到名为localhost的Host(即

Tomcat系列(一)- 整体架构

整体架构 我们想要了解一个框架,首先要了解它是干什么的,Tomcat我们都知道,是用于处理连接过来的Socket请求的.那么Tomcat就会有两个功能: 对外处理连接,将收到的字节流转化为自己想要的Request和Response对象 对内处理Servlet,将对应的Request请求分发到相应的Servlet中 那么我们整体的骨架就出来了,Tomcat其实就分为两大部分,一部分是连接器(Connnector)处理对外连接和容器(Container)管理对内的Servelet. 大体的关系图如下

Tomcat系列(11)——Tomcat 部署web应用的4种方法

核心内容 1.在Tomcat中有四种部署Web应用的方式,分别是: (1)利用Tomcat自动部署(项目直接拷贝OR WAR包拷贝 到webapps下) (2)利用控制台进行部署(tomcat的manager控制台的deploy区域) (3)增加自定义的Web部署文件(%Tomcat_Home%\conf\Catalina\localhost\AppName.xml) (4)手动修改%Tomcat_Home%\conf\server.xml文件来部署web应用 2.SpringBoot WEB项

Tomcat系列之服务器的安装与配置以及各组件详解

Tomcat系列之服务器的安装与配置以及各组件详解 大纲 一.前言 二.安装与配置Tomcat 三.Tomcat 目录的结构 四.Tomcat 配置文件 注,本文的测试的操作系统为CentOS 6.4 x86_64,软件版本为jdk-7u40.apache-tomcat-7.0.42.博文中的所有软件请到这里下载:http://yunpan.cn/QGBCLwrZnpLMS. 一.前言 在上一篇博文中我们主要讲解的Tomcat的基础知识以及相关的Java知识,对于不怎么清楚的博友可以参考一下:h

Tomcat 设计模式总结(Tomcat源代码阅读系列之八)

本篇我们将来分析一下Tomcat中所涉及到设计模式,本文我们将主要来分析外观模式,观察者模式,责任链模式,模板方法模式,命令模式. 在开始本文之前,笔者先说明一下对于设计模式的一点看法.笔者曾经经常看到网上有人讨论设计模式,也偶尔会遇到有人非要严格按照GOF设计模式的类图以及其中的角色去套用别人的设计,只要类图不一样,或者角色多了或者少了就会觉得怎么和官方定义的模式不一样,其实这都是对设计模式的误解.设计模式其实不仅仅存在软件行业,各行各业其实都有模式,它是所在行业对一些通用问题解决方案的总结和

tomcat系列之整体结构

本系列文章是基于tomcat6.0的源码. 首先分析一下tomcat的启动脚本,windows下的bat, if "%OS%" == "Windows_NT" setlocal rem --------------------------------------------------------------------------- rem Start script for the CATALINA Server rem ---------------------

tomcat系列之Java技术-1

Java与tomcat相关系列之一 1.Java技术包含的组件 包含四个独立且又彼此相关的技术: 1)       Java程序设计语言: 2)       JavaAPI(Java应用程序编程接口): 3)       Java class文件格式: 4)       JVM. 注:其实JVM可以理解为一个运行环境!!! 2.JVM的实现方式 1)       一次性解释器,解释字节码并执行. .javaà.class(bytecode)  即.java编译成为.class 2)       

Tomcat基本安装与组件简介

一.Tomcat 通常意义上的web服务器接受请求后,只是单纯地响应静态资源,如html文件,图片文件等,不能在后端进行一定的处理操作. Tomcat是Apache下的一个子项目,它具备web服务器的所有功能,不仅可以监听接受请求并响应静态资源,而且可以在后端运行特定规范的java代码servlet,同时将执行的结果以html代码的形式写回客户端. Tomcat由一系列的组件构成,其中核心的组件有三个: web容器--完成web服务器的功能. servlet容器--名字为catalina,用于处

详解Tomcat系列(一)-从源码分析Tomcat的启动

在整个Tomcat系列文章讲解之前, 我想说的是虽然整个Tomcat体系比较复杂, 但是Tomcat中的代码并不难读, 只要认真花点功夫, 一定能啃下来. 由于篇幅的原因, 很难把Tomcat所有的知识点都放到同一篇文章中, 我将把Tomcat系列文章分为Tomcat的启动, Tomcat中各模块的介绍和Tomcat中的设计模式三部分, 欢迎阅读与关注. 一:通过idea搭建Tomcat源码阅读环境 首先我们到Tomcat的官网(http://tomcat.apache.org/)上下载Tomc