`
- 浏览:
112200 次
- 性别:
- 来自:
苏州
-
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
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
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 是两个非常重要的版本,它们是Apache软件基金会开发的开源Java Servlet容器,主要用于运行Java Web应用程序。这两个版本都遵循Java EE(Enterprise Edition)规范,但各自具有不同的特点和改进...
在这个压缩包中,包含了Tomcat的三个不同版本:Tomcat 7、Tomcat 8和Tomcat 9,这些都是免安装版本,方便用户直接解压使用。 Tomcat 7是2011年发布的版本,它支持Servlet 3.0、JSP 2.2和EL 2.2规范。这个版本对并发...
Tomcat7、Tomcat8和Tomcat9是不同版本的Tomcat,每个版本都有其特性和改进。 **Tomcat7**: Tomcat7是2011年发布的,它主要支持Java Servlet 3.0和JSP 2.2规范。这个版本引入了一些重要改进,包括增强的安全性、更...
Tomcat7免安装版是这个软件的一个特殊版本,无需进行传统意义上的安装过程,用户可以直接解压并运行,简化了部署步骤。 首先,我们来看"免安装版"的概念。免安装版通常是指那些不需要通过安装程序在系统中写入大量...
标题中的"linux64_tomcat7"暗示了这是一个适用于64位Linux操作系统的Tomcat 7版本。Linux操作系统以其稳定性和安全性而受到广大服务器管理员的青睐,64位系统则能够更好地支持内存资源的使用,这对于处理大型Java...
在Windows环境下部署Apache Tomcat服务器是一项常见的任务,尤其对于开发和测试环境来说。在这个过程中,可能会遇到各种问题,本文将详细解析如何在Windows系统中部署Tomcat项目,并着重解决两个常见问题:数据库不...
《深入剖析Tomcat7源码》 ...通过对Tomcat7源码的深入学习,开发者不仅可以了解其工作原理,还能针对具体需求进行定制化开发,提高应用的稳定性和效率。下载并研究Tomcat7源码,对于提升Java Web开发技能大有裨益。
【标题】"Tomcat7 Linux版(免费!!!)"涉及的是在Linux操作系统上部署和运行Apache Tomcat 7这款开源的Java Servlet容器。Tomcat是应用广泛的轻量级Web服务器,尤其适合运行Java Web应用程序,如JSP和Servlet。 ...
这里提到的资源包含了Tomcat 7、8、8.5和9四个主要版本,这些版本都是为Java Web开发者准备的,特别是针对Eclipse集成开发环境的使用者。 Tomcat 7是Apache Tomcat的一个重要版本,它支持Java EE 6规范,包括...
Apache Tomcat 7是Apache软件基金会的一个开源项目,专门用于实现Java Servlet和JavaServer Pages(JSP)技术的标准,以及Java EE的Web应用程序部署。这个最新版本,即7.0.109,包含了对先前版本的改进和修复,旨在...
Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat ...
《Tomcat学习总结》 Tomcat,作为Java Web应用程序的开源服务器,是Apache软件基金会Jakarta项目的一个核心组件。在本文中,我们将深入探讨Tomcat 8.5版本的学习要点,包括其工作原理、配置与优化,以及在实际开发...
Linux版本的Tomcat7在Linux操作系统上部署和管理Java Web应用提供了稳定且高效的环境。"apache-tomcat-7.0.82.tar.gz"是Tomcat7的一个发行版,采用tar.gz格式进行打包,这种格式在Linux系统中常见,便于存储和传输。...
《深入剖析Tomcat7源码》 Tomcat7是一款广泛使用的开源Java Servlet容器,它实现了Java EE中的Servlet和JSP规范。源码分析是提升开发者对服务器内部运作机制理解的重要途径,尤其对于Tomcat这样的核心组件,源码的...
【标题】:“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)
本主题将深入探讨在Linux环境下安装、配置和管理Tomcat 7与Tomcat 8的过程,以及它们之间的差异。 一、安装Java环境 在安装Tomcat之前,必须先确保系统上已经安装了Java Development Kit (JDK)。Tomcat需要Java运行...
在标题为“tomcat7打补丁版.rar”的压缩包中,我们主要关注的是针对Apache Tomcat 7的一个安全补丁,特别是对于版本7.0.0到7.0.93之间的更新。这个补丁的目的是修复在这个特定版本范围内发现的安全漏洞,确保系统的...
标题中的“tomcat7.0下的64位的tomcat7.exe 和tomcat7w.exe”指的是Apache Tomcat服务器在7.0版本中为64位操作系统提供的可执行文件。Tomcat是Apache软件基金会的一个开源项目,它是一个流行的Java Servlet容器,...