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

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的结构图

Tomcat启动分析 - wh_0826 - wh_0826的博客

3 - 配置文件$CATALI

NA_HOME/conf/server.xml的说明

 1Tomcat启动分析 - wh_0826 - wh_0826的博客<!-- 启动Server     在端口8005处等待关闭命令     如果接受到"SHUTDOWN"字符串则关闭服务器     -->

 2Tomcat启动分析 - wh_0826 - wh_0826的博客

 3Tomcat启动分析 - wh_0826 - wh_0826的博客<Server port="8005" shutdown="SHUTDOWN" debug="0">

 4Tomcat启动分析 - wh_0826 - wh_0826的博客

 5Tomcat启动分析 - wh_0826 - wh_0826的博客  <!-- Listener ???       目前没有看到这里       -->

 6Tomcat启动分析 - wh_0826 - wh_0826的博客

 7Tomcat启动分析 - wh_0826 - wh_0826的博客  <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" debug="0"/>

 8Tomcat启动分析 - wh_0826 - wh_0826的博客

 9Tomcat启动分析 - wh_0826 - wh_0826的博客  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" debug="0"/>

10Tomcat启动分析 - wh_0826 - wh_0826的博客

11Tomcat启动分析 - wh_0826 - wh_0826的博客 

12Tomcat启动分析 - wh_0826 - wh_0826的博客

13Tomcat启动分析 - wh_0826 - wh_0826的博客  <!-- Global JNDI resources ???       目前没有看到这里,先略去       -->

14Tomcat启动分析 - wh_0826 - wh_0826的博客

15Tomcat启动分析 - wh_0826 - wh_0826的博客  <GlobalNamingResources>

16Tomcat启动分析 - wh_0826 - wh_0826的博客

17Tomcat启动分析 - wh_0826 - wh_0826的博客    Tomcat启动分析 - wh_0826 - wh_0826的博客 Tomcat启动分析 - wh_0826 - wh_0826的博客 Tomcat启动分析 - wh_0826 - wh_0826的博客 Tomcat启动分析 - wh_0826 - wh_0826的博客

18Tomcat启动分析 - wh_0826 - wh_0826的博客

19Tomcat启动分析 - wh_0826 - wh_0826的博客  </GlobalNamingResources>

20Tomcat启动分析 - wh_0826 - wh_0826的博客

21Tomcat启动分析 - wh_0826 - wh_0826的博客 

22Tomcat启动分析 - wh_0826 - wh_0826的博客

23Tomcat启动分析 - wh_0826 - wh_0826的博客  <!-- Tomcat的Standalone Service

24Tomcat启动分析 - wh_0826 - wh_0826的博客

25Tomcat启动分析 - wh_0826 - wh_0826的博客       Service是一组Connector的集合       它们共用一个Engine来处理所有Connector收到的请求     -->

26Tomcat启动分析 - wh_0826 - wh_0826的博客

27Tomcat启动分析 - wh_0826 - wh_0826的博客  <Service name="Tomcat-Standalone">

28Tomcat启动分析 - wh_0826 - wh_0826的博客

29Tomcat启动分析 - wh_0826 - wh_0826的博客    <!-- Coyote HTTP/1.1 Connector

30Tomcat启动分析 - wh_0826 - wh_0826的博客

31Tomcat启动分析 - wh_0826 - wh_0826的博客         className : 该Connector的实现类是org.apache.coyote.tomcat4.CoyoteConnector

32Tomcat启动分析 - wh_0826 - wh_0826的博客

33Tomcat启动分析 - wh_0826 - wh_0826的博客         port : 在端口号8080处侦听来自客户browser的HTTP1.1请求

34Tomcat启动分析 - wh_0826 - wh_0826的博客

35Tomcat启动分析 - wh_0826 - wh_0826的博客         minProcessors : 该Connector先创建5个线程等待客户请求,每个请求由一个线程负责

36Tomcat启动分析 - wh_0826 - wh_0826的博客

37Tomcat启动分析 - wh_0826 - wh_0826的博客         maxProcessors : 当现有的线程不够服务客户请求时,若线程总数不足75个,则创建新线程来处理请求

38Tomcat启动分析 - wh_0826 - wh_0826的博客

39Tomcat启动分析 - wh_0826 - wh_0826的博客         acceptCount : 当现有线程已经达到最大数75时,为客户请求排队

40Tomcat启动分析 - wh_0826 - wh_0826的博客

41Tomcat启动分析 - wh_0826 - wh_0826的博客                       当队列中请求数超过100时,后来的请求返回Connection refused错误

42Tomcat启动分析 - wh_0826 - wh_0826的博客

43Tomcat启动分析 - wh_0826 - wh_0826的博客         redirectport : 当客户请求是https时,把该请求转发到端口8443去

44Tomcat启动分析 - wh_0826 - wh_0826的博客

45Tomcat启动分析 - wh_0826 - wh_0826的博客         其它属性略         -->

46Tomcat启动分析 - wh_0826 - wh_0826的博客

47Tomcat启动分析 - wh_0826 - wh_0826的博客    <Connector className="org.apache.coyote.tomcat4.CoyoteConnector" 

48Tomcat启动分析 - wh_0826 - wh_0826的博客

49Tomcat启动分析 - wh_0826 - wh_0826的博客               port="8080"          minProcessors="5"     maxProcessors="75"    acceptCount="100" 

50Tomcat启动分析 - wh_0826 - wh_0826的博客

51Tomcat启动分析 - wh_0826 - wh_0826的博客               enableLookups="true" redirectPort="8443"   debug="0"     connectionTimeout="20000" 

52Tomcat启动分析 - wh_0826 - wh_0826的博客

53Tomcat启动分析 - wh_0826 - wh_0826的博客               useURIValidationHack="false"                       disableUploadTimeout="true" />

54Tomcat启动分析 - wh_0826 - wh_0826的博客

55Tomcat启动分析 - wh_0826 - wh_0826的博客    <!-- Engine用来处理Connector收到的Http请求

56Tomcat启动分析 - wh_0826 - wh_0826的博客

57Tomcat启动分析 - wh_0826 - wh_0826的博客         它将匹配请求和自己的虚拟主机,并把请求转交给对应的Host来处理  默认虚拟主机是localhost  -->

58Tomcat启动分析 - wh_0826 - wh_0826的博客

59Tomcat启动分析 - wh_0826 - wh_0826的博客<Engine name="Standalone" defaultHost="localhost" debug="0">

60Tomcat启动分析 - wh_0826 - wh_0826的博客

61Tomcat启动分析 - wh_0826 - wh_0826的博客<!-- 日志类,目前没有看到,略去先 -->

62Tomcat启动分析 - wh_0826 - wh_0826的博客

63Tomcat启动分析 - wh_0826 - wh_0826的博客      <Logger className="org.apache.catalina.logger.FileLogger" Tomcat启动分析 - wh_0826 - wh_0826的博客/>

64Tomcat启动分析 - wh_0826 - wh_0826的博客

65Tomcat启动分析 - wh_0826 - wh_0826的博客      <!-- Realm,目前没有看到,略去先 -->

66Tomcat启动分析 - wh_0826 - wh_0826的博客

67Tomcat启动分析 - wh_0826 - wh_0826的博客      <Realm className="org.apache.catalina.realm.UserDatabaseRealm" Tomcat启动分析 - wh_0826 - wh_0826的博客/>

68Tomcat启动分析 - wh_0826 - wh_0826的博客

69Tomcat启动分析 - wh_0826 - wh_0826的博客      <!-- 虚拟主机localhost

70Tomcat启动分析 - wh_0826 - wh_0826的博客

71Tomcat启动分析 - wh_0826 - wh_0826的博客           appBase : 该虚拟主机的根目录是webapps/

72Tomcat启动分析 - wh_0826 - wh_0826的博客

73Tomcat启动分析 - wh_0826 - wh_0826的博客           它将匹配请求和自己的Context的路径,并把请求转交给对应的Context来处理

74

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值