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

学习tomcat 小记(1)

阅读更多
1)org.apache.catalina.connector.http.HttpConnector
实现了org.apache.catalina.Connector接口,java.lang.Runnable接口(确保在自己的线程中运行)和org.apache.catalina.Lifecycle接口。Lifecycle接口用于维护每个实现了该接口的tomcat的组件的生命周期。

HttpConnector的initialize方法会调用一个私有方法open,返回一个java.net.ServerSocket实例,赋值给成员变量serverSocket。这里并没有直接调用ServerSocket的构造方法,而是用过open方法调用ServerSocket的一个工厂方法来实现。

2)org.apache.catalina.Connector接口
该接口有很多方法,最重要的是getContainer,setContainer,createRequest和createResponse。

3)HttpProcessor
在tomcat的默认connector中,使用了一个HttpProcessor的对象池, 其中的每个对象都在其自己的线程中使用。因此,connector可同时处理多个http请求。
HttpConnector维护了一个HttpProcessor的对象池,避免了频繁的创建HttpProcessor对象。该对象池使用java.io.Stack实现。
在HttpConnector中,创建的HttpProcessor数目由两个变量决定:minProcessors和maxProcessors。
在tomcat的默认连接器中,HttpProcessor实现了java.lang.Runnable接口,每个HttpProcessor的实例都可以在其自己的线程中运行,成为“处理器线程”(“processor thread”)。HttpConnector创建每个HttpProcessor实例时,都会调用其start方法,启动其处理器线程。

4)HttpConnector类实现了java.lang.Runnable接口,这样它可以专注于自己的线程。启动应用程序时,会创建一个HttpConnector对象,其run方法会被调用。其run方法中是一个循环体,执行以下三件事:
 等待http请求;
 为每个请求创建一个HttpPorcessor对象;
 调用HttpProcessor对象的process方法。

HttpProcessor类的process方法从http请求中获取socket。对每个http请求,它要做一下三件事:
 创建一个HttpRequest对象和一个HttpResponse对象;
 处理请求行(request line)和请求头(request headers),填充HttpRequest对象;
 将HttpRequest对象和HttpResponse对象传给ServletProcessor或StaticResourceProcessor的process方法。


5)HttpProcessor类的process方法
process方法做了三件事,解析连接,解析请求,解析请求头
parseConnection,parseRequest和parseHeaders

HttpProcessor对象负责创建HttpRequest对象,并填充它的成员变量。在其parse方法中,将请求行(request line)和请求头(request header)信息填充到HttpRequest对象中,但并不会填充请求体(request body)和查询字符串(query string)。
分享到:
评论

相关推荐

    Tomcat学习资料1

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

    windows下部署tomcat项目小记

    1. **部署方式一**:将打包好的WAR文件(如`tspace.war`)直接复制到`Tomcat\webapps`目录下。Tomcat会自动检测到新添加的WAR文件并进行解压,然后在`webapps`目录下生成同名的文件夹(即`tspace`)。项目可以通过`...

    Tomcat学习总结.zip

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

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

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

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

    【标题】"Tomcat源码学习:一个最简单的‘Tomcat’",这篇博客主要探讨的是如何通过学习Tomcat的源代码来理解这个流行的开源Java Servlet容器的工作原理。Tomcat是Apache软件基金会的一个项目,它是Java Web应用...

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

    总之,学习Tomcat源码不仅能够提升你对Web服务器底层工作的理解,还能够提高你在Java Web开发中的问题排查能力,让你成为一名更出色的开发者。通过阅读《How Tomcat Works》并结合实际项目实践,你将能够逐步揭开...

    tomcat7tomcat8tomcat9

    Tomcat是Apache软件基金会下的一个开源项目,是一个广泛使用的Java Servlet容器,特别因为其轻量级、高效能和稳定性而闻名。它实现了Java Servlet和JavaServer Pages(JSP)规范,使得开发者能够用Java语言来编写...

    tomcat源码学习之环境搭建

    1. **了解架构**:阅读`server.xml`配置文件,了解Tomcat的服务器配置,如端口设置、Connector和Context定义。此外,研究`catalina.jar`和`tomcat-juli.jar`等核心库的源码,它们包含了Tomcat的主要组件和服务。 2....

    tomcat学习资料整理(不断更新)

    【标题】"Tomcat学习资料整理(不断更新)"揭示了这个压缩包文件是关于Tomcat服务器的深入学习资源,特别是关注其源码和使用的工具。Tomcat是Apache软件基金会的Jakarta项目中的一个核心项目,它是一个开源的、免费的...

    tomcat7,tomcat8,tomcat9

    1. 下载并解压对应版本的Tomcat到本地文件系统。 2. 在Eclipse中,通过"Window" -> "Preferences" -> "Server" -> "Runtime Environments" 添加Tomcat实例,指定Tomcat的安装路径。 3. 配置服务器运行时环境,设置...

    tomcat9 源码学习

    1. **架构概述**:Tomcat由多个组件构成,如Catalina(核心Servlet容器)、 Coyote(HTTP/HTTPS连接器)、 Jasper(JSP引擎)、Juli(日志框架)等。理解这些组件间的交互是深入学习的基础。 2. **生命周期管理**:...

    tomcat5.5tomcat最新客户端

    tomcat最新客户端tomcat最新客户端tomcat最新客户端tomcat最新客户端tomcat最新客户端tomcat最新客户端tomcat最新客户端tomcat最新客户端tomcat最新客户端tomcat最新客户端tomcat最新客户端tomcat最新客户端tomcat...

    tomcat学习笔记

    1. **Tomcat的安装与配置** - 下载:从Apache官方网站下载最新版本的Tomcat压缩包。 - 解压:将下载的压缩包解压到指定目录,如`C:\Tomcat`。 - 配置环境变量:设置`CATALINA_HOME`指向Tomcat的根目录,并将`%...

    tomcat学习精华笔记

    1. Tomcat 简介 - Tomcat 是Apache Jakarta项目的子项目,它是一个轻量级的Web服务器,特别适合中小型Java Web应用。 - Tomcat 支持Servlet和JSP规范,提供了Servlet容器Catalina和JSP编译器Jasper。 - Tomcat ...

    tomcat 7 和 tomcat 8

    1. 发布时间:Tomcat 7在2011年发布,作为Tomcat 6的升级版,提供了对Java EE 6的支持。 2. Java EE支持:Tomcat 7支持Servlet 3.0、JSP 2.2、EL 2.2和WebSocket 1.0等规范,使得开发者能够利用新的特性进行Web应用...

    tomcat 学习与分析总结资料

    1. **Tomcat启动脚本catalina** Tomcat的启动脚本`catalina.sh/bat`是服务器运行的关键。这个脚本负责配置环境变量、初始化Java选项,并启动或关闭Tomcat服务器。通过研究这个脚本,我们可以了解如何配置JVM参数,...

    Tomcat培训学习资料

    Apache Tomcat是一款广泛使用的开源Servlet容器,它实现了Java Servlet和JavaServer Pages (JSP)技术,并在...通过本课程的学习,可以提升他们对于Tomcat服务器的管理和应用能力,有效地应对实际工作中的各种挑战。

    Linux学习专用Tomcat8.0版本

    Linux学习与Tomcat8.0版本的结合是IT运维领域中的常见应用场景,尤其对于初学者而言,这是一个很好的起点。Tomcat是一款开源的Java Servlet容器,主要用于运行Java Web应用程序。在这个"Linux学习专用Tomcat8.0版本...

Global site tag (gtag.js) - Google Analytics