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

学习tomcat 小记(7)

阅读更多
StandardContext类

创建了StandardContext实例后,必须调用调用其start方法来准备接收http请求。但是,在调用start方法时,可能会报错,这时StandardContext对象的available属性会被置为false,available属性表明了StandardContext对象是否可用。
若要是start方法正确执行,必须正确对StandardContext对象正确配置。tomcat中,配置StandardContext对象需要一系列操作。正确设置后,StandardContext对象才能读取并解析web.xml文件。

1)StandardContext的配置
StandardContext类的构造函数
构造函数中最重要的事情是为pipeline设置basic valve,org.apache.catalina.core.StandardContextValve。该valve会处理从connector中接收到的http请求。

启动StandardContext
start方法初始化StandardContext对象,用监听器配置StandardContext实例。

下面是start方法要做的一些事:
(1)触发BEFORE_START事件;
(2)将availability和configured属性设置为false;
(3)设置resources,loader,manager;
(4)初始化字符串映射;
(5)启动与该context关联的组件;
(6)启动子container;
(7)启动pipeline;
(8)启动manager;
(9)触发START事件,这里监听器(ContextConfig)会执行一些配置操作,若设置成功,ContextConfig会将StandardContext实例的configured变量设置为true;
(10)检查configured属性的值,若为true,调用postWelcomePages方法,载入子wrapper,将availability属性设置为true。若configured为false,则调用stop方法;
(11)触发AFTER_START事件。

invoke方法

在tomcat4中,StandardContext的invoke方法由相关联的connector调用,或者当StandardContext是一个子container时,由host的invoke方法调用。StandardContext的invoke方法第一次调用时会检查应用程序是否正在重载过程中,若是,则等待应用程序重载完成。然后,调用其父类(ContainerBase)的invoke方法。
在tomcat5中,StandardContext类并没有提供invoke方法的实现,因此会调用ContainerBase的invoke方法,检查应用程序是否在重载的工作被移到了StandardContextValve类的invoke方法中。


StandardContextMapper类

对于每个接收到的http请求,都会调用StandardContext的pipeline的basic valve。StandardContext的basic valve是org.apache.catalina.core.StandardContextValve类实现的。StandardContextValve.invoke方法要做的第一件事是获取一个wrapper对象处理请求。
在tomcat4中,StandardContextValve实例使用context的mapper找到一个合适的wrapper使用。一一旦获得了wrapper,就会调用wrapper的invoke方法。
在tomcat5中,删除Mapper接口及其相关类,而是从request对象的getWrapper方法中获取wrapper对象。

对重载的支持

StandardContext类中定义了reloadable属性来指明该应用是否启用的重载功能。当启用了重载后,当web.xml或WEB-INF/classes目录下文件被重新编译后,应用程序会重载。
StandardContext类是通过其loader实现应用程序重载的。在tomcat4中,StandardContext对象中的WebappLoader类实现了Loader接口,并使用另一个线程检查WEB-INF目录中的类和jar的时间戳。只需要调用setContainer方法将WebappLoader对象与StandardContext对象相关联就可以启动该检查线程。

backgroundProcess方法
context的运行需要其他组件的支持,例如loader和manager。通常来说,这些组件需要使用各自的线程执行一些后台处理任务。例如,为了支持自动重载,loader组件需要使用一个线程周期性的检查类和jar的时间戳;manager组件使用一个线程检查它所管理的session对象的过期时间。在tomat4中,这些组件都开启了各自的线程完成工作。
在tomcat5中,使用了不同的方法。所有的后台处理共享同一的线程。若某个组件或container需要周期性的执行一个操作,只需要将代码写到backgroundProcess方法中即可。
这个共享线程由ContainerBase对象创建,并在其start方法中调用threadStart方法


下一小结将是Host和Engine
分享到:
评论

相关推荐

    tomcat-redis-session-manager-1.2-tomcat-7-java-7

    tomcat-redis-session-manager-1.2-tomcat-7-java-7tomcat-redis-session-manager-1.2-tomcat-7-java-7tomcat-redis-session-manager-1.2-tomcat-7-java-7tomcat-redis-session-manager-1.2-tomcat-7-java-7tomcat-...

    tomcat 7 和 tomcat 8

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

    tomcat7tomcat8tomcat9

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

    tomcat7,tomcat8,tomcat9

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

    tomcat7免安装版

    Tomcat7免安装版是这个软件的一个特殊版本,无需进行传统意义上的安装过程,用户可以直接解压并运行,简化了部署步骤。 首先,我们来看"免安装版"的概念。免安装版通常是指那些不需要通过安装程序在系统中写入大量...

    linux64_tomcat7

    标题中的"linux64_tomcat7"暗示了这是一个适用于64位Linux操作系统的Tomcat 7版本。Linux操作系统以其稳定性和安全性而受到广大服务器管理员的青睐,64位系统则能够更好地支持内存资源的使用,这对于处理大型Java...

    windows下部署tomcat项目小记

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

    tomcat7源码下载

    《深入剖析Tomcat7源码》 ...通过对Tomcat7源码的深入学习,开发者不仅可以了解其工作原理,还能针对具体需求进行定制化开发,提高应用的稳定性和效率。下载并研究Tomcat7源码,对于提升Java Web开发技能大有裨益。

    tomcat7linux版(免费!!!)

    【标题】"Tomcat7 Linux版(免费!!!)"涉及的是在Linux操作系统上部署和运行Apache Tomcat 7这款开源的Java Servlet容器。Tomcat是应用广泛的轻量级Web服务器,尤其适合运行Java Web应用程序,如JSP和Servlet。 ...

    tomcat 7到9 版本

    这里提到的资源包含了Tomcat 7、8、8.5和9四个主要版本,这些版本都是为Java Web开发者准备的,特别是针对Eclipse集成开发环境的使用者。 Tomcat 7是Apache Tomcat的一个重要版本,它支持Java EE 6规范,包括...

    tomcat 7 最新版本 apache-tomcat-7.0.109

    Apache Tomcat 7是Apache软件基金会的一个开源项目,专门用于实现Java Servlet和JavaServer Pages(JSP)技术的标准,以及Java EE的Web应用程序部署。这个最新版本,即7.0.109,包含了对先前版本的改进和修复,旨在...

    apache-tomcat-7

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

    Tomcat学习总结.zip

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

    Tomcat7---Linux版本apache-tomcat-7.0.82.tar.gz

    Linux版本的Tomcat7在Linux操作系统上部署和管理Java Web应用提供了稳定且高效的环境。"apache-tomcat-7.0.82.tar.gz"是Tomcat7的一个发行版,采用tar.gz格式进行打包,这种格式在Linux系统中常见,便于存储和传输。...

    tomcat7源码

    《深入剖析Tomcat7源码》 Tomcat7是一款广泛使用的开源Java Servlet容器,它实现了Java EE中的Servlet和JSP规范。源码分析是提升开发者对服务器内部运作机制理解的重要途径,尤其对于Tomcat这样的核心组件,源码的...

    Tomcat学习资料1

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

    Tomcat7下载(apache-tomcat-7.0.85)

    Tomcat7下载(apache-tomcat-7.0.85)Tomcat7下载(apache-tomcat-7.0.85)Tomcat7下载(apache-tomcat-7.0.85)Tomcat7下载(apache-tomcat-7.0.85)

    linux下tomcat7,tomcat8

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

    tomcat7打补丁版.rar

    在标题为“tomcat7打补丁版.rar”的压缩包中,我们主要关注的是针对Apache Tomcat 7的一个安全补丁,特别是对于版本7.0.0到7.0.93之间的更新。这个补丁的目的是修复在这个特定版本范围内发现的安全漏洞,确保系统的...

    tomcat7.0下的64位的tomcat7.exe 和tomcat7w.exe

    标题中的“tomcat7.0下的64位的tomcat7.exe 和tomcat7w.exe”指的是Apache Tomcat服务器在7.0版本中为64位操作系统提供的可执行文件。Tomcat是Apache软件基金会的一个开源项目,它是一个流行的Java Servlet容器,...

Global site tag (gtag.js) - Google Analytics