Tomcat是apache基金会下非常重要并且使用非常普遍的项目,任何使用java开发的程序员基本上都使用过tomcat。兴趣使然,抽了时间对tomcat 6.0的源码和架构进行了阅读和分析,通过对源码的阅读,希望能对tomcat和更加清晰的认识,对java应用服务器的原理有个大致的理解,更重要的是希望在阅读别人的代码的过程中,吸取别人的宝贵和独到的观点和想法。废话不多说。
先来看一下server.xml文件:
从server.xml文件我们就可以基本上看出tomcat的组件化架构。介绍一下tomcat中主要的组件和概念:
Server
它表示的就是整个tomcat J2EE容器。包含了所有的服务以及服务上下文环境。
在tomcat中server只有一个。
Service
它表示tomcat提供的一个服务。
所谓服务,就是包含一至多个连接器(Connector)的组件,并且是能够对用户请求作出响应的组件。
在tomcat的server中,可以有一至多个service。
Connector
它表示与用户请求建立连接的连接者。基于各种协议的请求访问tomcat时,都会首先都会通过Connector进行处理。
Tomcat中定义了两种 Connector,一个是基于Http协议,处理普通的http请求;
一个是AJP协议,用户处理有其他应用服务器(如apache,IIS)转发而来的请求。
Engine
它表示的是一个真正处理用户请求的处理引擎。
在tomcat中一个 Engine是个容器,继承自org.apache.catalina.Container,因为只会处理servlet请求,即就是一个 servlet 容器。
引擎(Engine)从连接器(Connector)那里接收到请求,并对请求进行相应的处理,返回结果给连接器,最终返回给客户端。
Host
它在tomcat中代表的就是一个虚拟主机。Host也是个容器,继承自org.apache.catalina.Container。
一个引擎可以包含很多的主机(Host),一个虚拟主机中可以包含多个Web应用(Context组件)。
Context
它表示一个具体的web应用。一个主机可包含多个Web应用,所以可有多个Web应用上下文,不同的上下文可用不同路径来表示。
下面在看一下uml结构:
反映到架构图上就是这样的:
总结一下,tomcat采用了清晰的组件化的架构
位于顶端的server代表了整个tomcat服务器;
server中包含一到多个service提供各种服务,默认的是名称为catalina的服务
service提供请求服务首先是根据不同协议的客户端请求选择相应的Connector来进行处理的,
Connector对请求进行分析后,转而交给真正的处理引擎(Engine),即Servlet容器。
处理引擎(Engine)内部实例化一个至多个虚拟主机(Host),
对应不同的域名请求。每个虚拟主机又包含多个web应用和上下文环境(Context),
上下文中的web应用收到客户端请求后对请求进行解析处理,
返回响应结果给Connector,并最终返回给客户端。
===============================
我自己写的PPT
http://docs.google.com/present/edit?id=0AVNMFcjKl_VCZG52OGsyaF8wY2JieGs0ZnE&hl=en
相关推荐
7. "tomcat源码分析之一架构.pdf":可能涵盖了Tomcat的整体架构,包括Catalina、 Coyote、Jasper等主要模块的功能和相互关系。 8. "HTTP协议详解.pdf":作为基础,此文档提供了HTTP协议的详细讲解,帮助读者理解...
Tomcat源码剖析 : 整体架构 层层分析 源码解析 架构分析 (Http服务器功能:Socket通信(TCP/IP)、解析Http报文 Servlet容器功能:有很多Servlet(自带系统级Servlet+自定义Servlet),Servlet处理具体的业务逻辑...
### Tomcat架构的源码分析 #### 一、Tomcat的架构概述 Tomcat作为一款广泛使用的开源Java Servlet容器,其内部架构设计简洁而高效。本文档将对Tomcat的架构进行详细介绍,并从源码层面深入分析其核心组成部分。...
《Tomcat6源码分析——深入理解Web服务器的运行机制》 Tomcat6作为Apache软件基金会的Jakarta项目的一部分,是一款广泛使用的Java Servlet容器,它实现了Java Servlet和JavaServer Pages(JSP)规范,为开发和部署...
以上是对Tomcat工作原理的简要介绍,通过阅读和分析源码,我们可以更深入地理解其内部机制,对于开发、调试以及性能优化都有极大的帮助。在实际应用中,结合官方文档和社区资源,我们可以解决遇到的各类问题,让...
《Tomcat源码分析1——服务启动与架构详解》 Tomcat,作为一款广泛应用的开源Java Servlet容器,其内部架构和启动流程对于深入理解和优化Web应用程序至关重要。本文将重点解析Tomcat启动时的关键步骤和核心组件,...
通过对Tomcat源码的研究,我们可以更深入地了解Web服务器的工作原理,掌握其架构设计以及如何进行故障排查和性能优化。这对于希望在Web服务器、中间件开发或系统架构设计方面有所建树的IT专业人员来说,是极有价值的...
Apache Tomcat 8.5.23 源码分析 Apache Tomcat 是一个开源的、免费的Web服务器和Servlet容器,它实现了Java Servlet和JavaServer Pages(JSP)规范,是开发和部署Java Web应用的重要平台。深入理解Tomcat的源码有助...
源码分析是提升开发者对服务器内部运作机制理解的重要途径,尤其对于Tomcat这样的核心组件,源码的学习能够帮助我们更深入地理解Web应用的部署、运行以及性能优化。 首先,我们要了解Tomcat的架构。Tomcat7基于...
二、Tomcat源码分析 1. **启动流程**:从`bin/catalina.sh`或`bin/catalina.bat`开始,通过`org.apache.catalina.startup.Bootstrap`启动Catalina,加载配置文件,初始化服务器,最后启动主循环监听端口。 2. **...
一、Tomcat 6源码分析 Tomcat 6的源码结构复杂而有序,主要包括以下几个核心模块: 1. Catalina:这是Tomcat的核心部分,负责处理Servlet和JSP请求。 2. Coyote:负责HTTP/HTTPS协议的解析,是Tomcat与网络通信的...
Tomcat源码分析有助于识别性能瓶颈,例如调整线程池大小、缓存策略、连接器设置等。此外,了解如何配置和使用NIO或APR(Apache Portable Runtime)连接器可以显著提升Tomcat的并发处理能力。 8. **故障排查** ...
《Tomcat源码研读笔记》是对Apache Tomcat服务器内部工作原理的深度探索。Tomcat作为一款广泛应用的开源Java Servlet容器,它的源码是理解Java Web应用运行机制的关键。本笔记将围绕Tomcat的核心组件、架构设计以及...
【标题】"简单的Tomcat源码实现"涵盖了Tomcat服务器的基础构建和运行原理,这是一个针对初学者或希望深入了解Tomcat内部工作方式的开发者所关注的话题。Tomcat是Apache软件基金会的Jakarta项目中的一个核心项目,它...
总之,《Tomcat深入剖析》结合源码分析,是一本全面且深入的Tomcat学习资源,无论是初学者还是经验丰富的开发者,都能从中受益匪浅。通过学习,读者不仅能够掌握Tomcat的基本操作,还能深入了解其内部机制,为构建...
Tomcat源码的分析可以帮助开发者理解Web应用的部署、请求处理、响应生成、会话管理等流程。在源码中,你可以找到如Catalina(核心Servlet容器)、 Coyote(连接器负责网络通信)和 Jasper(JSP引擎)等关键模块。 ...