tomcat内部运行原理浅析--转载
Tomcat 工作原理【转】
2009-01-02 15:57
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
|