<!-- 启动Server 在端口8005处等待关闭命令 如果接受到"SHUTDOWN"字符串则关闭服务器 -->
     
     
      <Server port="8005" shutdown="SHUTDOWN" debug="0">
     
     
      ......
     
     
      <!-- 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">
     
     
      <!-- 虚拟主机localhost appBase : 该虚拟主机的根目录是webapps/ 它将匹配请求和
     
     
      自己的Context的路径,并把请求转交给对应的Context来处理 -->
     
     
      <Host name="localhost" debug="0" appBase="webapps" unpackWARs="true" autoDeploy="true">
     
     
      <!-- 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-app><!-- 概述: 该文件是所有的WEB APP共用的部署配置文件, 每当一个WEB APP被DEPLOY,该文件都将先被处理,然后才是WEB APP自己的/WEB-INF/web.xml --><!-- +-------------------------+ --><!-- | servlet类定义部分 | --><!-- +-------------------------+ --><!-- DefaultServlet当用户的HTTP请求无法匹配任何一个servlet的时候,该servlet被执行URL PATTERN MAPPING : / --><servlet><servlet-name>default</servlet-name><servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class><init-param><param-name>debug</param-name><param-value>0</param-value></init-param><init-param><param-name>listings</param-name><param-value>true</param-value></init-param><load-on-startup>1</load-on-startup></servlet><!-- InvokerServlet处理一个WEB APP中的匿名servlet 当一个servlet被编写并编译放入/WEB-INF/classes/中,却没有在/WEB-INF/web.xml中定义的时候该servlet被调用,把匿名servlet映射成/servlet/ClassName的形式URL PATTERN MAPPING : /servlet/* --><servlet><servlet-name>invoker</servlet-name><servlet-class>org.apache.catalina.servlets.InvokerServlet </servlet-class><init-param><param-name>debug</param-name><param-value>0</param-value></init-param><load-on-startup>2</load-on-startup></servlet><!-- JspServlet当请求的是一个JSP页面的时候(*.jsp)该servlet被调用它是一个JSP编译器,将请求的JSP页面编译成为servlet再执行URL PATTERN MAPPING : *.jsp --><servlet><servlet-name>jsp</servlet-name><servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class><init-param><param-name>logVerbosityLevel</param-name><param-value>WARNING</param-value></init-param><load-on-startup>3</load-on-startup></servlet><!-- +---------------------------+ --><!-- | servlet映射定义部分 | --><!-- +---------------------------+ --><servlet-mapping><servlet-name>default</servlet-name><url-pattern>/</url-pattern></servlet-mapping><servlet-mapping><servlet-name>invoker</servlet-name><url-pattern>/servlet/*</url-pattern></servlet-mapping><servlet-mapping><servlet-name>jsp</servlet-name><url-pattern>*.jsp</url-pattern></servlet-mapping><!-- +------------------------+ --><!-- | 其它部分,略去先 | --><!-- +------------------------+ -->... ... ... ...</web-app>
假设来自客户的请求为:
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
                  
                  
                  
                  
                            
      
          
                
                
                
                
              
                
                
                
                
                
              
                
                
              
            
                  
					388
					
被折叠的  条评论
		 为什么被折叠?
		 
		 
		
    
  
    
  
            


            