`
youyun_2008
  • 浏览: 112202 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

学习tomcat 小记(8)

阅读更多
Host和Engine

1. Host
1)StandardHost类
catalina中org.apache.catalina.core.StandardHost类是Host接口的标准实现。该类继承自the org.apache.catalina.core.ContainerBase类,实现了Host和Deployer接口。
与StandardContext和StandardWrapper类似,StandardHost的构造函数会将basic valve(org.apache.catalina.core.StandardHostValve)添加到其pipeline中。

每当接收到一个http请求,会调用host的invoke方法。在StandardHost类并没有提供invoke方法的实现,因此,它会调用其父类ContainerBase的invoke方法。而会ContainerBase的invoke方法调用StandardHostValve的invoke方法。此外,StandardHostValve的invoke方法会调用StandardHost的map方法来获取一个context处理http请求。

2)StandardHostMapper类

3)StandardHostValve类
org.apache.catalina.core.StandardHostValve类是StandardHost的basic valve。
在tomcat4中,invoke方法通过调用StandardHost的map方法来获取合适的context。
最后,invoke方法调用context的invoke来处理http请求。

2. Engine
1)Engine接口
org.apache.catalina.Engine接口表示了一个engine对象,也就是tomcat整个的servlet引擎。当部署tomcat时要使用多个虚拟机的话,就需要使用engine。事实上,部署的tomcat都会是使用一个engine。

2)StandardEngine类
org.apache.catalina.core.StandardEngine类是Engine接口的标准实现。相比与StandardContext类和StandardHost类,StandardEngine类相对小一些。在实例化的时候,StandardEngine会添加一个basic valve
作为一个顶层container,engine的子container只能是host,所以,若是给它设置以了一个非host的container,会抛出异常。

3)StandardEngineValve类
org.apache.catalina.core.StandardEngineValve类是StandardEngine的basic valve。
在验证了request和response对象的类型后,invoke方法会获取host对象,用来处理请求。

3. Server与Service
1)server
org.apache.catalina.Server接口表示了整个catalina的servlet引擎,囊括了所有的组件。server使用一种优雅的方法来启动/停止整个系统,不需要对connector和container分别启动/关闭。
当启动server时,server会负责启动其所有的组件,然后就等待关闭命令。server使用service来获取组件,如connector和container。

shutdown属性保存了发送给server的关闭命令。port属性保存了server会从哪个端口获取关闭命令。addService方法用于为server添加service,removeService方法则可以删除某个service。initialize方法会在启动之前执行。

2)StandardServer
org.apache.catalina.core.StandardServer类是Server接口的标准实现。其中的shutdown方法是最重要的,用于关闭server。该类中的许多方法用于将server配置信息保存为一个新的server.xml文件。
与StandardServer的生命周期有关的方法有:initialize,start,stop和await。与其他组件类似,initialize用于初始化,start用于启动,然后调用await等待关闭命令,最后,调用stop关闭server。调用await方法后,server会被阻塞,直到总8085端口(或其他端口,自定)收到了关闭命令。当await命令返回后,stop方法会关闭所有的子组件。

3)Service接口
org.apache.catalina.Service接口表示了一个service。一个service可以持有一个container和多个connector,所有的connector都会与这个container相关联。

4)StandardService类
org.apache.catalina.core.StandardService类是Service接口的标准实现。StandardService的initialize方法用于初始化添加到其中的connector。StandardService类还实现Lifecycle接口,因此,它也可以启动connector和container。

connector和container
StandardService对象中有两种组件:connector和container。其中container只有一个,connector可以有多个。多个connector使用tomcat可以多种不同的请求协议。例如,一个处理http请求,一个处理https请求。

4.Bootstrap类
Bootstrap类的main方法会创建一个engine,一个host,一个context,两个wrapper和一个connector。然后,将它们进行关联。但,需要注意的是,connector并没有与顶层container(engine)相关联。相反,main方法创建了一个service对象,和一个server对象,将service添加到server中:
Service service = new StandardService();
    service.setName("Stand-alone Service");
    Server server = new StandardServer();
    server.addService(service);

然后,main方法将connector和engine添加到service中:
service.addConnector(connector);
service.setContainer(engine);

这样,connector就和container关联起来了。然后,main方法调用server的initialize和start方法,初始化connector,并将connector和container启动:
if (server instanceof Lifecycle) {
      try {
        server.initialize();
        ((Lifecycle) server).start();

接下来,main方法调用server的await方法,进入循环等待,监听8085端口。注意,此时connector已经其中,但监听的是另一个端口8080。当await返回时,说明接收到了关闭命令,此时,main方法调用server的stop方法,关闭其所有组件。

Stopper类
Stopper类通过socket向server发送一个关闭命令,从而关闭server。


分享到:
评论

相关推荐

    tomcat7,tomcat8,tomcat9

    Tomcat7、Tomcat8和Tomcat9是不同版本的Tomcat,每个版本都有其特性和改进。 **Tomcat7**: Tomcat7是2011年发布的,它主要支持Java Servlet 3.0和JSP 2.2规范。这个版本引入了一些重要改进,包括增强的安全性、更...

    tomcat7tomcat8tomcat9

    在这个压缩包中,包含了Tomcat的三个不同版本:Tomcat 7、Tomcat 8和Tomcat 9,这些都是免安装版本,方便用户直接解压使用。 Tomcat 7是2011年发布的版本,它支持Servlet 3.0、JSP 2.2和EL 2.2规范。这个版本对并发...

    tomcat 7 和 tomcat 8

    Tomcat 7 和 Tomcat 8 是两个非常重要的版本,它们是Apache软件基金会开发的开源Java Servlet容器,主要用于运行Java Web应用程序。这两个版本都遵循Java EE(Enterprise Edition)规范,但各自具有不同的特点和改进...

    windows下部署tomcat项目小记

    在Windows环境下部署Apache Tomcat服务器是一项常见的任务,尤其对于开发和测试环境来说。在这个过程中,可能会遇到各种问题,本文将详细解析如何在Windows系统中部署Tomcat项目,并着重解决两个常见问题:数据库不...

    Tomcat学习总结.zip

    《Tomcat学习总结》 Tomcat,作为Java Web应用程序的开源服务器,是Apache软件基金会Jakarta项目的一个核心组件。在本文中,我们将深入探讨Tomcat 8.5版本的学习要点,包括其工作原理、配置与优化,以及在实际开发...

    tomcat8源码

    通过研究Tomcat8的源码,我们可以深入理解其内部工作流程,学习如何定制和优化服务器配置,以适应不同的Web应用需求。这不仅有助于提升开发效率,还能帮助我们解决在实际项目中遇到的性能瓶颈和安全问题。因此,对...

    Tomcat学习资料1

    【标题】:“Tomcat学习资料1”所涵盖的知识点包括了Tomcat服务器的使用、配置以及Web项目的部署。Tomcat是Apache软件基金会的Jakarta项目中的一个核心项目,是一款开源的Java Servlet容器,广泛用于搭建Java Web...

    tomcat8安装包(含windows和linux版本).zip

    Tomcat 8是一款广泛应用的开源Java Servlet容器,由Apache软件基金会开发,主要用于部署和运行Java Web应用程序。这个压缩包包含了Windows和Linux两个操作系统平台的安装版本,使得用户可以在不同的操作系统环境下...

    Tomcat源码学习:一个最简单的“Tomcat”

    8. **安全性**:Tomcat的安全配置,如 Realm、Role和Constraint,以及如何保护Web应用免受攻击。 通过这个“SimpleTomcat”项目,读者可以逐步了解这些核心概念,并通过实践加深理解。这对于想要深入研究Web服务器...

    tomcat官网版本Tomcat+Java学习资源

    【标题】:“Tomcat官网版本Tomcat+Java学习资源”是一个综合的学习资料包,主要针对的是Java开发中的关键工具——Apache Tomcat服务器以及相关的Java技术。Apache Tomcat是一款开源的Servlet容器,它实现了Java ...

    tomcat8.zip

    总的来说,"Tomcat8.zip"提供了一个完整的Tomcat 8.5.54源码环境,适合于学习Tomcat的内部实现,理解Java Web应用服务器的工作原理,以及进行相关的开发实践。用户不仅可以阅读源码来提升技术能力,还可以通过修改...

    学习tomcat源码+英文《How Tomcat Work》和每一章的相关项目+tomcat6源码依赖jar

    8. **JAR依赖**:Tomcat运行需要一系列的库文件,理解这些依赖可以帮助你解决部署问题。 在学习过程中,结合实际项目进行实践,例如创建一个简单的Servlet或JSP应用,观察其在Tomcat中的运行过程,这样能更直观地...

    Maven使用tomcat8-maven-plugin插件.docx

    Maven 使用 tomcat8-maven-plugin 插件 Maven 是一个流行的构建自动化工具,它可以帮助开发者自动完成项目的编译、测试、打包、部署等任务。 Tomcat 是一个流行的 Web 服务器,Maven 提供了一个插件 tomcat8-maven-...

    tomcat7 tomcat8合集

    Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat ...

    tomcat8 Linux版本下载

    tomcat8 Linux版本下载 Tomcat 是一个轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。此版本为linux的64位版本,解压即使用。非常的方便非常的好用

    tomcat 版本6、7、8

    Tomcat6、Tomcat7和Tomcat8是三个重要的版本,每个版本都有其特定的功能改进和性能提升,下面将详细介绍它们之间的差异和演化。 【Tomcat6】: Tomcat6是基于Java Servlet 2.5和JavaServer Pages 2.1标准的。这个...

    tomcat8解压版(免安装)

    tomcat8解压版(免安装)能够使电脑同时安装多个tomcat,比安装版要方便的多,因为该资源被下载了很多次,下载所需积分变多,大家可以去官网自行下载,https://tomcat.apache.org/download-80.cgi,打开此链接进行...

    linux下tomcat7,tomcat8

    本主题将深入探讨在Linux环境下安装、配置和管理Tomcat 7与Tomcat 8的过程,以及它们之间的差异。 一、安装Java环境 在安装Tomcat之前,必须先确保系统上已经安装了Java Development Kit (JDK)。Tomcat需要Java运行...

Global site tag (gtag.js) - Google Analytics