`

Tomcat 工作原理

阅读更多

1 - Tomcat Server的组成部分
1.1 - Server

A Server element represents the entire Catalina servlet container. (Singleton)

1.2 - Service

A Service element represents the combination of one or more Connector components that share a single Engine
Service是这样一个集合:它由一个或者多个Connector组成,以及一个Engine,负责处理所有Connector所获得的客户请求

1.3 - Connector

一个Connector将在某个指定端口上侦听客户请求,并将获得的请求交给Engine来处理,从Engine处获得回应并返回客户
TOMCAT有两个典型的Connector,一个直接侦听来自browser的http请求,一个侦听来自其它WebServer的请求
Coyote Http/1.1 Connector 在端口8080处侦听来自客户browser的http请求
Coyote JK2 Connector 在端口8009处侦听来自其它WebServer(Apache)的servlet/jsp代理请求

1.4 - Engine

The Engine element represents the entire request processing machinery associated with a particular Service
It receives and processes all requests from one or more Connectors
and returns the completed response to the Connector for ultimate transmission back to the client
Engine下可以配置多个虚拟主机Virtual Host,每个虚拟主机都有一个域名
当Engine获得一个请求时,它把该请求匹配到某个Host上,然后把该请求交给该Host来处理
Engine有一个默认虚拟主机,当请求无法匹配到任何一个Host上的时候,将交给该默认Host来处理

1.5 - Host

代表一个Virtual Host,虚拟主机,每个虚拟主机和某个网络域名Domain Name相匹配
每个虚拟主机下都可以部署(deploy)一个或者多个Web App,每个Web App对应于一个Context,有一个Context path
当Host获得一个请求时,将把该请求匹配到某个Context上,然后把该请求交给该Context来处理
匹配的方法是“最长匹配”,所以一个path==""的Context将成为该Host的默认Context
所有无法和其它Context的路径名匹配的请求都将最终和该默认Context匹配

1.6 - Context

一个Context对应于一个Web Application,一个Web Application由一个或者多个Servlet组成
Context在创建的时候将根据配置文件$CATALINA_HOME/conf/web.xml和$WEBAPP_HOME/WEB-INF/web.xml载入Servlet类
当Context获得请求时,将在自己的映射表(mapping table)中寻找相匹配的Servlet类
如果找到,则执行该类,获得请求的回应,并返回

2 - Tomcat Server的结构图


 

3 - 配置文件$CATALINA_HOME/conf/server.xml的说明
该文件描述了如何启动Tomcat Server

4 - Context的部署配置文件web.xml的说明
一个Context对应于一个Web App,每个Web App是由一个或者多个servlet组成的
当一个Web App被初始化的时候,它将用自己的ClassLoader对象载入“部署配置文件web.xml”中定义的每个servlet类
它首先载入在$CATALINA_HOME/conf/web.xml中部署的servlet类
然后载入在自己的Web App根目录下的WEB-INF/web.xml中部署的servlet类
web.xml文件有两部分:servlet类定义和servlet映射定义
每个被载入的servlet类都有一个名字,且被填入该Context的映射表(mapping table)中,和某种URL PATTERN对应
当该Context获得请求时,将查询mapping table,找到被请求的servlet,并执行以获得请求回应

分析一下所有的Context共享的web.xml文件,在其中定义的servlet被所有的Web App载入

5 - Tomcat Server处理一个http请求的过程
假设来自客户的请求为:
http://localhost:8080/wsota/wsota_index.jsp

  1. 请求被发送到本机端口8080,被在那里侦听的Coyote HTTP/1.1 Connector获得
  2. Connector把该请求交给它所在的Service的Engine来处理,并等待来自Engine的回应
  3. Engine获得请求localhost/wsota/wsota_index.jsp,匹配它所拥有的所有虚拟主机Host
  4. Engine匹配到名为localhost的Host(即使匹配不到也把请求交给该Host处理,因为该Host被定义为该Engine的默认主机)
  5. localhost Host获得请求/wsota/wsota_index.jsp,匹配它所拥有的所有Context
  6. Host匹配到路径为/wsota的Context(如果匹配不到就把该请求交给路径名为""的Context去处理)
  7. path="/wsota"的Context获得请求/wsota_index.jsp,在它的mapping table中寻找对应的servlet
  8. Context匹配到URL PATTERN为*.jsp的servlet,对应于JspServlet类
  9. 构造HttpServletRequest对象和HttpServletResponse对象,作为参数调用JspServlet的doGet或doPost方法
  10. Context把执行完了之后的HttpServletResponse对象返回给Host
  11. Host把HttpServletResponse对象返回给Engine
  12. Engine把HttpServletResponse对象返回给Connector
  13. Connector把HttpServletResponse对象返回给客户browser

source:http://docs.huihoo.com/apache/tomcat/heavyz/01-startup.html 1 - Tomcat Server的组成部分
1.1 - Server

A Server element represents the entire Catalina servlet container. (Singleton)

1.2 - Service

A Service element represents the combination of one or more Connector components that share a single Engine
Service是这样一个集合:它由一个或者多个Connector组成,以及一个Engine,负责处理所有Connector所获得的客户请求

1.3 - Connector

一个Connector将在某个指定端口上侦听客户请求,并将获得的请求交给Engine来处理,从Engine处获得回应并返回客户
TOMCAT有两个典型的Connector,一个直接侦听来自browser的http请求,一个侦听来自其它WebServer的请求
Coyote Http/1.1 Connector 在端口8080处侦听来自客户browser的http请求
Coyote JK2 Connector 在端口8009处侦听来自其它WebServer(Apache)的servlet/jsp代理请求

1.4 - Engine

The Engine element represents the entire request processing machinery associated with a particular Service
It receives and processes all requests from one or more Connectors
and returns the completed response to the Connector for ultimate transmission back to the client
Engine下可以配置多个虚拟主机Virtual Host,每个虚拟主机都有一个域名
当Engine获得一个请求时,它把该请求匹配到某个Host上,然后把该请求交给该Host来处理
Engine有一个默认虚拟主机,当请求无法匹配到任何一个Host上的时候,将交给该默认Host来处理

1.5 - Host

代表一个Virtual Host,虚拟主机,每个虚拟主机和某个网络域名Domain Name相匹配
每个虚拟主机下都可以部署(deploy)一个或者多个Web App,每个Web App对应于一个Context,有一个Context path
当Host获得一个请求时,将把该请求匹配到某个Context上,然后把该请求交给该Context来处理
匹配的方法是“最长匹配”,所以一个path==""的Context将成为该Host的默认Context
所有无法和其它Context的路径名匹配的请求都将最终和该默认Context匹配

1.6 - Context

一个Context对应于一个Web Application,一个Web Application由一个或者多个Servlet组成
Context在创建的时候将根据配置文件$CATALINA_HOME/conf/web.xml和$WEBAPP_HOME/WEB-INF/web.xml载入Servlet类
当Context获得请求时,将在自己的映射表(mapping table)中寻找相匹配的Servlet类
如果找到,则执行该类,获得请求的回应,并返回

2 - Tomcat Server的结构图



 
 

3 - 配置文件$CATALINA_HOME/conf/server.xml的说明
该文件描述了如何启动Tomcat Server

4 - Context的部署配置文件web.xml的说明
一个Context对应于一个Web App,每个Web App是由一个或者多个servlet组成的
当一个Web App被初始化的时候,它将用自己的ClassLoader对象载入“部署配置文件web.xml”中定义的每个servlet类
它首先载入在$CATALINA_HOME/conf/web.xml中部署的servlet类
然后载入在自己的Web App根目录下的WEB-INF/web.xml中部署的servlet类
web.xml文件有两部分:servlet类定义和servlet映射定义
每个被载入的servlet类都有一个名字,且被填入该Context的映射表(mapping table)中,和某种URL PATTERN对应
当该Context获得请求时,将查询mapping table,找到被请求的servlet,并执行以获得请求回应

分析一下所有的Context共享的web.xml文件,在其中定义的servlet被所有的Web App载入

5 - Tomcat Server处理一个http请求的过程
假设来自客户的请求为:
http://localhost:8080/wsota/wsota_index.jsp

  1. 请求被发送到本机端口8080,被在那里侦听的Coyote HTTP/1.1 Connector获得
  2. Connector把该请求交给它所在的Service的Engine来处理,并等待来自Engine的回应
  3. Engine获得请求localhost/wsota/wsota_index.jsp,匹配它所拥有的所有虚拟主机Host
  4. Engine匹配到名为localhost的Host(即使匹配不到也把请求交给该Host处理,因为该Host被定义为该Engine的默认主机)
  5. localhost Host获得请求/wsota/wsota_index.jsp,匹配它所拥有的所有Context
  6. Host匹配到路径为/wsota的Context(如果匹配不到就把该请求交给路径名为""的Context去处理)
  7. path="/wsota"的Context获得请求/wsota_index.jsp,在它的mapping table中寻找对应的servlet
  8. Context匹配到URL PATTERN为*.jsp的servlet,对应于JspServlet类
  9. 构造HttpServletRequest对象和HttpServletResponse对象,作为参数调用JspServlet的doGet或doPost方法
  10. Context把执行完了之后的HttpServletResponse对象返回给Host
  11. Host把HttpServletResponse对象返回给Engine
  12. Engine把HttpServletResponse对象返回给Connector
  13. Connector把HttpServletResponse对象返回给客户browser
  • 大小: 4.4 KB
分享到:
评论
3 楼 hailiang0901 2010-06-24  
xiaohe1620 写道
把localhost:8080改成任意一个ip可以实现么

怎么可能啊!
2 楼 xiaohe1620 2010-06-23  
我希望发布项目时假的ip地址 不知LZ有什么见解
1 楼 xiaohe1620 2010-06-23  
把localhost:8080改成任意一个ip可以实现么

相关推荐

    Tomcat工作原理祥解

    【Tomcat工作原理详解】 Tomcat,作为Java世界中最受欢迎的Servlet和JSP容器,是Apache软件基金会Jakarta项目的组成部分,也是Sun Microsystems官方推荐的Web应用服务器。它免费且开源,便于开发者理解和自定义,与...

    tomcat工作原理深入解析

    Tomcat工作原理深入解析 Tomcat作为一款广泛应用的开源Java Servlet容器,它的内部架构和工作流程对于理解Web应用的运行至关重要。本文将深入探讨Tomcat的主要组成部分,包括Server、Service、Connector、Engine、...

    tomcat 工作原理

    《Tomcat工作原理详解》 Tomcat作为一款广泛使用的开源Java应用服务器,其工作原理是许多开发者想要深入了解的关键。本文将从多个层面深入探讨Tomcat的运作机制,旨在帮助读者全面理解其设计思想和核心功能。 一、...

    tomcat工作原理深入详解

    【Tomcat工作原理深入详解】 Tomcat是一款广泛使用的开源Web应用服务器,尤其在中小型系统和并发访问量不高的场景中,其轻量级特性使其成为开发者首选。虽然Tomcat最初作为Apache服务器的扩展存在,但它可以独立...

    tomcat工作原理-框架

    **Tomcat工作原理详解** Tomcat是一款开源的Java Servlet容器,由Apache软件基金会开发并维护。它是Apache Jakarta项目的一部分,主要用于部署和运行Java Web应用程序。本文将深入探讨Tomcat的工作原理,包括其启动...

    tomcat工作原理(中文版)

    ### Tomcat工作原理详解 #### 一、概览 Tomcat是Apache软件基金会下的Jakarta项目中的一个开源的Web服务器和Servlet容器。它主要用来运行Java Web应用,并且支持Servlet和JSP技术。Tomcat的核心架构包括多个组件,...

    tomcat工作原理

    深入理解tomcat工作原理,剖析其工作的过程,tomcat各节点的作用

    tomcat工作原理深入详解——HowTomcatWorks中文版.pdf

    tomcat工作原理深入详解——HowTomcatWorks中文版.pdf

    模拟tomcat工作原理

    【标题】:“模拟Tomcat工作原理” 【描述】:这篇博文详细探讨了Tomcat服务器的工作流程,通过解析和模拟其内部机制,帮助读者深入理解Web应用的部署与运行过程。虽然描述部分没有提供具体信息,但我们可以从标签...

    tomcat的工作原理

    《深入解析Tomcat的工作原理》 一、简介与概览 Apache Tomcat是基于Java的开源Web服务器,它不仅能够运行Java Servlet,还能部署和执行Java Server Pages (JSP)技术,以及支持Java Web应用程序所需的其他标准协议...

    tomcat工作原理.docx

    ### Tomcat工作原理详解 #### 一、引言 Tomcat作为一款开源的Servlet容器,因其易用性和稳定性而受到广泛欢迎。对于那些希望深入了解Tomcat内部机制的技术人员来说,《HowTomcatWorks》这本书提供了宝贵的资源。...

    How Tomcat Works(tomcat工作原理)

    **Tomcat工作原理详解** Apache Tomcat是一款广泛使用的开源Java Servlet容器,它是Java EE应用程序运行的基础,特别是对于那些基于Web的应用。Tomcat以其轻量级、高效和易于配置的特性,成为了开发和部署Java Web...

    how tomcat workd tomcat工作原理

    为了理解Tomcat的工作原理,我们首先需要了解其核心组成部分:连接器(Connector)和容器(Container)。 连接器(Connector)负责监听特定端口上的TCP连接请求,并将接收到的HTTP请求转换成Tomcat内部能够处理的...

    tomcat工作原理-组件

    **Tomcat工作原理详解——组件解析** Tomcat作为Apache软件基金会的开源项目,是Java Servlet、JavaServer Pages(JSP)和Java Expression Language(EL)的实现,是Web应用程序服务器的首选之一。深入理解Tomcat的...

    Tomcat工作原理祥解.doc

    Tomcat工作原理详解 Tomcat,作为Apache软件基金会Jakarta项目的子项目,是一个开源的Servlet容器,也是Java Web应用服务器的代表之一。Tomcat最初是为了支持JSP和Servlet而诞生,随着时间的推移,它逐渐成为了Sun...

    tomcat服务器工作原理

    **Tomcat服务器工作原理** Tomcat是一款开源的Java Servlet容器,它是Apache软件基金会下的Jakarta项目的核心组件,主要用于部署和运行Java Web应用程序。Tomcat以其轻量级、高效和易于管理的特性,成为了许多...

Global site tag (gtag.js) - Google Analytics