第11章 Tomcat的系统架构与设计模式

11.1 Tomcat总体设计

  11.1.1 Tomcat总体架构

  Tomcat和核心有连个组件:Connector和Container,Connector是可以被替换的。一个container可以有多个connector,多个connector和一个container形成一个service,service的生存环境就是server。所以Tomcat的声明周期由Server控制。

    1. 以Service作为“婚姻”

    Connector负责对外交流,container主要处理connector接受的请求,主要处理内部事务。Service将两者组合到一起。Service只是在Connector和Container外面包一层,向外提供服务。一个Service可以设置多个Connector,但是只能有一个Connector容器。

          Tomcat中service接口的标准实现类是StandardService,它不仅实现了Service接口,同时实现了Lifecycle接口。

    2. 以Server为“居”

    提供接口让其他程序能访问这个Service集合,同时维护它包含的所有Service生命周期,包括如何初始化,如何结束服务 如何找别人要访问的service。

    server的标准实现类StandardServer实现了先关方法。

    3. 组件的生命“Lifecycle”

    Tomcat中组件的生命周期通过Lifecycle接口控制,组件只要继承这个接口,并实现其中的方法就可以统一被拥有它的组件控制了。这样一层一层的,直到最高级的组件就可以控制Tomcat中酥油组件的生命周期了,这个最高组件就是Server,而控制server的是StartUP,也就是启动和关闭Tomcat

    Server启动时,下面的services都启动;stop时,所有的services都stop

  11.1.2 Connector组件

  Connector组件是Tomcat中的两个核心组件之一。主要任务是负责监听浏览器发过来的TCP连接请求,创建一个Request和Response对象分别用于和请求端交换数据。然后会产生一个线程来处理这个请求并把产生的Request和Response对象传递给处理这个请求的线程。处理这个请求的线程就是Container组件要做的事了。

  当Connector将Socket连接封装成Request和Respone对象后,接下来的事交给Container来处理。

  11.1.3 Servlet容器Container

  Container是容器的父接口,所有的子容器都必须实现这个接口,Container容器的设计用的是典型的责任链的设计模式,它由4个子容器组件构成,分别是Engine, Host, Context和Wrapper,这4个组件不是平行的,而是父子关系,Engine包含Host,Host包含Context,Context包含Wrapper。通常是一个Servlet class对应一个Wrapper,如果多个Servlet可以定义多个Wrapper;如果有多个Wrapper,则要定义一个更高级别的Container,如Context,Context通常对应下面的配置:

 <Context path="/library"     docBase="D:/proects\library\deploy\target\library.war"   reloadable=true>

    1. 容器的总体设计

    Context还可以定义在父容器Host中,Host不是必须的,但是要运行war程序,就必须用Host,因为在war中必有web.xml文件,这个文件的解析需要Host。如果有多个HOSt,就需要定义Engine了。Engine就是一个完整的Servlet引擎。

    2. Engine容器

    标准实现类是StandardEngine,添加子容器只能是Host类型。

    3. Host容器

    Host是engine的子容器,一个Host代码一个虚拟主机,这个主机的作用就是运行多个应用,它负责安装和展开这些应用,

    4. Context容器

    Context代表Servlet的Context,它具备了Servlet运行的基本环境,理论上只要要Context就可以运行Servlet了,简单的Tomcat可以没有Engine和Host。

    Context最重要的功能是管理它里面的Servlet实例,Servlet实例在Context中是以Wrapper出现的。

    Context的配置文件有个reloadable属性,为true时,war被修改后Tomcat会自动重新加载这个应用。

    5. Wrapper容器  

    Wrapper代表一个Servlet,它负责管理一个Servlet,包括Servlet的装载、初始化、执行及资源回收。

    实现类是StandardWrapper,还实现了一个Servlet初始化信息的ServletConfig。

    它基本描述了对Servlet的操作,装载了Servlet后就会调用Servlet的init方法。

    当Servlet被初始化完成后,就等着StandardWrapperValue去调用它的service方法了,调用Service方法之前要调用Servlet所有的的filter。

  11.1.4 Tomcat中的其他组件

    安全组件security, 日志组件logger, session, mbeans,naming等。这些组件共同为Connector和Container提供必要的服务。

11.2 Tomcat中的设计模式

  11.2.1 门面设计模式

    1. 门面设计模式的原理

    2. Tomcat的门面设计模式示例

  11.2.2 观察者设计模式

    1. 观察者模式的原理

    2. Tomcat的观察者模式示例

  11.2.3 命令设计模式

    1. 命令模式的原理

    2. Tomcat中命令模式的示例

  11.2.4 责任链设计模式

    1. 责任链模式的原理

    2. Tomcat中的责任链模式示例

11.3 总结

时间: 2024-10-08 23:09:03

第11章 Tomcat的系统架构与设计模式的相关文章

Tomcat 系统架构与设计模式,第 1 部分: 工作原理

Tomcat 系统架构与设计模式,第 1 部分: 工作原理 这个分为两个部分的系列文章将研究 Apache Tomcat 的系统架构以及其运用的很多经典设计模式.本文是第 1 部分,将主要从 Tomcat 如何分发请求.如何处理多用户同时请求,还有它的多级容器是如何协调工作的角度来分析 Tomcat 的工作原理,这也是一个 Web 服务器首要解决的关键问题. 这个分为两个部分的系列文章将研究 Apache Tomcat 的系统架构以及其运用的很多经典设计模式.本文是第 1 部分,将主要从 Tom

【Tomcat】Tomcat 系统架构与设计模式,第 1 部分: 工作原理

这个分为两个部分的系列文章将研究 Apache Tomcat 的系统架构以及其运用的很多经典设计模式.本文是第 1 部分,将主要从 Tomcat 如何分发请求.如何处理多用户同时请求,还有它的多级容器是如何协调工作的角度来分析 Tomcat 的工作原理,这也是一个 Web 服务器首要解决的关键问题. 本文以 Tomcat 5 为基础,也兼顾最新的 Tomcat 6 和 Tomcat 4.Tomcat 的基本设计思路和架构是具有一定连续性的. Tomcat 总体结构 Tomcat 的结构很复杂,但

Tomcat 系统架构与设计模式

Tomcat 系统架构与设计模式,第 1 部分: 工作原理 Tomcat 系统架构与设计模式,第 2 部分: 设计模式分析

Tomcat 系统架构与设计模式,第 2 部分: 设计模式分析

Tomcat 系统架构与设计模式,第 2 部分: 设计模式分析 这个分为两个部分的系列文章研究了 Apache Tomcat 服务器的系统架构以及其运用的很多经典设计模式.第 1 部分 分析了 Tomcat 的工作原理,第 2 部分将分析 Tomcat 中运用的许多经典设计模式,如模版模式.工厂模式和单例模式等.通过学习它们的实践运用能给我们以后的软件设计起到一定的借鉴作用. 门面设计模式 门面设计模式在 Tomcat 中有多处使用,在 Request 和 Response 对象封装中.Stan

苏宁易购11.11:商品详情系统架构设计

商品详情系统介绍 基本介绍 商品详情系统是一个展示商品基本信息.参数等详情的系统,是商品购买的入口.它是电商平台中访问量最大的系统之一,苏宁易购大促期间PV量和UV量很大,这么大的访问量对系统的并发能力要求高.在业务上它与周边系统的关系是高耦合.依赖商品详情系统的的系统特别多,比如:促销系统.推荐系统.大聚惠.等众多营销系统.还有主数据系统.购物车.收藏夹等,业务复杂度高对系统设计提出更多的要求. 业务特点 重点在于数据展示 页面信息丰富,如:商品详情.商家列表.推荐.排行榜等 部分数据时效要求

Tomcat 系统架构与设计模式1

从 Tomcat 如何分发请求.如何处理多用户同时请求,还有它的多级容器是如何协调工作的角度来分析 Tomcat 的工作原理,这也是一个 Web 服务器首要解决的关键问题 Tomcat 总体结构 Tomcat 的结构很复杂,但是 Tomcat 也非常的模块化,找到了 Tomcat 最核心的模块,您就抓住了 Tomcat 的“七寸”.下面是 Tomcat 的总体结构图: 图 1.Tomcat 的总体结构 从上图中可以看出 Tomcat 的心脏是两个组件:Connector 和 Container,

Tomcat 系统架构与设计模式2

门面设计模式 门面设计模式在 Tomcat 中有多处使用,在 Request 和 Response 对象封装中.Standard Wrapper 到 ServletConfig 封装中.ApplicationContext 到 ServletContext 封装中等都用到了这种设计模式. 门面设计模式的原理 这么多场合都用到了这种设计模式,那这种设计模式究竟能有什么作用呢?顾名思义,就是将一个东西封装成一个门面好与人家更容易进行交流,就像一个国家的外交部一样. 这种设计模式主要用在一个大的系统中

系统架构之设计模式一、基础知识

从今天开始将常用到的设计模式整理.归档,首先介绍下设计模式基础知识. 一.设计模式分类 创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式. 结构型模式,共七种:适配器模式.装饰器模式.代理模式.外观模式.桥接模式.组合模式.享元模式. 行为型模式,共十一种:策略模式.模板方法模式.观察者模式.迭代子模式.责任链模式.命令模式.备忘录模式.状态模式.访问者模式.中介者模式.解释器模式. 二.设计模式六大原则 1.开闭原则(Open Close Principle) 开

系统架构设计——设计模式之代理模式(二)CGLIB动态代理实现

像上一篇所说的代理模式其实是静态代理,在实际开发中其实应用不大,因为他需要事先知道被代理对象是谁,而且被代理对象和代理对象实现了公共的接口.实际情况往往并不能满足这些条件,我们往往在写代理模式的时候并不知道到时候被代理的对象是谁.解决办法就是--动态代理.以下我们将使用CGLIB实现动态代理. 一.动态代理概述 程序在运行期而不是编译器,生成被代理对象的代理对象,并且被代理对象并不需要和代理对象实现共同的接口.基于此,我们可以利用代理对象,提供一种以控制对被代理对象的访问. 1.1 动态代理的原