• Tomcat的工作原理


    • Tomcat的组成

      Server:一个Server 元素代表整个Catalina servlet容器. (单例模式设计)

      Service:它由一个或者多个Connector组成,以及一个Engine,负责处理所有Connector所获得的客户请求。

      Connector:一个Connector将在某个指定端口上侦听客户请求,并将获得的请求交给Engine来处理,从Engine处获得回应并返回客户。

      Engine:Engine下可以配置多个虚拟主机Virtual Host,每个虚拟主机都有一个域名。

           当Engine获得一个请求时,它把该请求匹配到某个Host上,然后把该请求交给该Host来处理。

      Host:虚拟主机,每个虚拟主机和某个网络域名Domain Name相匹配。

      Context:一个Context对应于一个Web Application

    • server.xml

      

    <!----------------------------------------------------------------------------------------------->
    <!-- 启动Server
         在端口8005处等待关闭命令
         如果接受到"SHUTDOWN"字符串则关闭服务器
         -->
    <Server port="8005" shutdown="SHUTDOWN" debug="0">
      <!-- Listener ???
           目前没有看到这里
           -->
      <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" debug="0"/>
      <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" debug="0"/>
      <!-- Global JNDI resources ???
           目前没有看到这里,先略去
           -->
      <GlobalNamingResources>
        ... ... ... ...
      </GlobalNamingResources>
      <!-- Tomcat的Standalone Service
           Service是一组Connector的集合
           它们共用一个Engine来处理所有Connector收到的请求
           -->
      <Service name="Tomcat-Standalone">
        <!-- Coyote HTTP/1.1 Connector
             className : 该Connector的实现类是org.apache.coyote.tomcat4.CoyoteConnector
             port : 在端口号8080处侦听来自客户browser的HTTP1.1请求
             minProcessors : 该Connector先创建5个线程等待客户请求,每个请求由一个线程负责
             maxProcessors : 当现有的线程不够服务客户请求时,若线程总数不足75个,则创建新线程来处理请求
             acceptCount : 当现有线程已经达到最大数75时,为客户请求排队
                           当队列中请求数超过100时,后来的请求返回Connection refused错误
             redirectport : 当客户请求是https时,把该请求转发到端口8443去
             其它属性略
             -->
        <Connector className="org.apache.coyote.tomcat4.CoyoteConnector" 
                   port="8080" 
                   minProcessors="5" maxProcessors="75" acceptCount="100" 
                   enableLookups="true" 
                   redirectPort="8443" 
                   debug="0" 
                   connectionTimeout="20000" 
                   useURIValidationHack="false" 
                   disableUploadTimeout="true" />
        <!-- Engine用来处理Connector收到的Http请求
             它将匹配请求和自己的虚拟主机,并把请求转交给对应的Host来处理
             默认虚拟主机是localhost
             -->
        <Engine name="Standalone" defaultHost="localhost" debug="0">
          <!-- 日志类,目前没有看到,略去先 -->
          <Logger className="org.apache.catalina.logger.FileLogger" .../>
          <!-- Realm,目前没有看到,略去先 -->
          <Realm className="org.apache.catalina.realm.UserDatabaseRealm" .../>
          <!-- 虚拟主机localhost
               appBase : 该虚拟主机的根目录是webapps/
               它将匹配请求和自己的Context的路径,并把请求转交给对应的Context来处理
               -->
          <Host name="localhost" debug="0" appBase="webapps" unpackWARs="true" autoDeploy="true">
            <!-- 日志类,目前没有看到,略去先 -->
            <Logger className="org.apache.catalina.logger.FileLogger" .../>
          <!-- Context,对应于一个Web App
                 path : 该Context的路径名是"",故该Context是该Host的默认Context
                 docBase : 该Context的根目录是webapps/mycontext/
                 -->
            <Context path="" docBase="mycontext" debug="0"/>
            <!-- 另外一个Context,路径名是/wsota -->
            <Context path="/wsota" docBase="wsotaProject" debug="0"/>        
          </Host>
        </Engine>
      </Service>
    </Server>
    <!----------------------------------------------------------------------------------------------->
    • web.xml

      tomcat中的web.xml有两个部分存在:$CATALINA_HOME/conf/web.xml和Web App根目录下的WEB-INF/web.xml。

      都是为了部署servlet类的:servlet、servletMapping等。也会部署struts2的filter等。

      Tomcat启动的时候,先加载server.xml,然后加载web.xml。

    • Tomcat工作流程

      

    •   
  • 相关阅读:
    3、取邮件
    9、将标准字符流写到文件中
    8、使用转换流处理标准输入
    6、数据流
    关闭子窗体时刷新父页面
    sql索引规则
    DataTable DataRow[] 排序 多列
    Oracle 自定义函数创建同义词、存储过程或表创建同义词
    C# DataTable 排序
    sql 分组后每组查询10个
  • 原文地址:https://www.cnblogs.com/lxq0309/p/3673080.html
Copyright © 2020-2023  润新知