`
yjhexy
  • 浏览: 331069 次
  • 性别: Icon_minigender_1
  • 来自: 火星
社区版块
存档分类
最新评论

tomcat源码分析之一《架构》

阅读更多

首先感谢我的好朋友罗兵,此文摘自他的文章

tomcat源码分析之一《架构》   

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

  • 大小: 33 KB
  • 大小: 20.6 KB
  • 大小: 41.8 KB
分享到:
评论
2 楼 gtandsn 2012-07-10  
楼主很不错的
1 楼 leiyunshi2008163.co 2011-02-11  
看得出楼主是个非常有想法的人。借鉴学习学习!

相关推荐

    tomcat 源码分析系列文档

    7. "tomcat源码分析之一架构.pdf":可能涵盖了Tomcat的整体架构,包括Catalina、 Coyote、Jasper等主要模块的功能和相互关系。 8. "HTTP协议详解.pdf":作为基础,此文档提供了HTTP协议的详细讲解,帮助读者理解...

    「Tomcat源码剖析」.pdf

    Tomcat源码剖析 : 整体架构 层层分析 源码解析 架构分析 (Http服务器功能:Socket通信(TCP/IP)、解析Http报文 Servlet容器功能:有很多Servlet(自带系统级Servlet+自定义Servlet),Servlet处理具体的业务逻辑...

    tomcat架构的源码分析

    ### Tomcat架构的源码分析 #### 一、Tomcat的架构概述 Tomcat作为一款广泛使用的开源Java Servlet容器,其内部架构设计简洁而高效。本文档将对Tomcat的架构进行详细介绍,并从源码层面深入分析其核心组成部分。...

    tomcat6源码分析

    《Tomcat6源码分析——深入理解Web服务器的运行机制》 Tomcat6作为Apache软件基金会的Jakarta项目的一部分,是一款广泛使用的Java Servlet容器,它实现了Java Servlet和JavaServer Pages(JSP)规范,为开发和部署...

    tomcat源码

    以上是对Tomcat工作原理的简要介绍,通过阅读和分析源码,我们可以更深入地理解其内部机制,对于开发、调试以及性能优化都有极大的帮助。在实际应用中,结合官方文档和社区资源,我们可以解决遇到的各类问题,让...

    Tomcat源码分析1

    《Tomcat源码分析1——服务启动与架构详解》 Tomcat,作为一款广泛应用的开源Java Servlet容器,其内部架构和启动流程对于深入理解和优化Web应用程序至关重要。本文将重点解析Tomcat启动时的关键步骤和核心组件,...

    Tomcat源码研究.pdf

    通过对Tomcat源码的研究,我们可以更深入地了解Web服务器的工作原理,掌握其架构设计以及如何进行故障排查和性能优化。这对于希望在Web服务器、中间件开发或系统架构设计方面有所建树的IT专业人员来说,是极有价值的...

    tomcat8源码

    Apache Tomcat 8.5.23 源码分析 Apache Tomcat 是一个开源的、免费的Web服务器和Servlet容器,它实现了Java Servlet和JavaServer Pages(JSP)规范,是开发和部署Java Web应用的重要平台。深入理解Tomcat的源码有助...

    tomcat7源码

    源码分析是提升开发者对服务器内部运作机制理解的重要途径,尤其对于Tomcat这样的核心组件,源码的学习能够帮助我们更深入地理解Web应用的部署、运行以及性能优化。 首先,我们要了解Tomcat的架构。Tomcat7基于...

    tomcat源码基于6.0

    二、Tomcat源码分析 1. **启动流程**:从`bin/catalina.sh`或`bin/catalina.bat`开始,通过`org.apache.catalina.startup.Bootstrap`启动Catalina,加载配置文件,初始化服务器,最后启动主循环监听端口。 2. **...

    Tomcat源码阅读(一)使用Idea运行Tomcat6源码

    一、Tomcat 6源码分析 Tomcat 6的源码结构复杂而有序,主要包括以下几个核心模块: 1. Catalina:这是Tomcat的核心部分,负责处理Servlet和JSP请求。 2. Coyote:负责HTTP/HTTPS协议的解析,是Tomcat与网络通信的...

    tomcat源码,servlet-api源码

    Tomcat源码分析有助于识别性能瓶颈,例如调整线程池大小、缓存策略、连接器设置等。此外,了解如何配置和使用NIO或APR(Apache Portable Runtime)连接器可以显著提升Tomcat的并发处理能力。 8. **故障排查** ...

    tomcat源码研读笔记中的tomcat源码

    《Tomcat源码研读笔记》是对Apache Tomcat服务器内部工作原理的深度探索。Tomcat作为一款广泛应用的开源Java Servlet容器,它的源码是理解Java Web应用运行机制的关键。本笔记将围绕Tomcat的核心组件、架构设计以及...

    简单的Tomcat源码实现

    【标题】"简单的Tomcat源码实现"涵盖了Tomcat服务器的基础构建和运行原理,这是一个针对初学者或希望深入了解Tomcat内部工作方式的开发者所关注的话题。Tomcat是Apache软件基金会的Jakarta项目中的一个核心项目,它...

    Tomcat深入剖析pdf+源码(Tomcat运行原理)

    总之,《Tomcat深入剖析》结合源码分析,是一本全面且深入的Tomcat学习资源,无论是初学者还是经验丰富的开发者,都能从中受益匪浅。通过学习,读者不仅能够掌握Tomcat的基本操作,还能深入了解其内部机制,为构建...

    java和tomcat源码

    Tomcat源码的分析可以帮助开发者理解Web应用的部署、请求处理、响应生成、会话管理等流程。在源码中,你可以找到如Catalina(核心Servlet容器)、 Coyote(连接器负责网络通信)和 Jasper(JSP引擎)等关键模块。 ...

Global site tag (gtag.js) - Google Analytics