JavaWeb學習之——Tomcat篇之Container

概述

Container接口是Tomcat中容器的接口,Container一共有4個子接口(容器類型):web

  1. Engune
  2. Host
  3. Context
  4. Wrapper

而ContainerBase是Container的默認實現類,而上面4個子接口的默認實現類爲 StandarXxx。app

從類圖中有能夠發現他們也是經過Lifecycle接口管理生命週期的webapp

容器說明

  • 一個Service對應對應一個Engine,
  • 一個Engine對應多個Host
  • 一個Host對應對個Context
  • 一個Context對應多個Wrapper
  • Engine: 用於管理多個站點(Host)
  • Host:表明一個站點,例如 www.aaa.com 能夠配置爲Host_A,www.bbb.com 配置爲Host_B,那麼在訪問 www.aaa.com/xxx/xx 的時候只會在Host_A中去找對應的URL路徑映射
  • Context:表明一個應用程序,也就是咱們日常開發的一個應用(WEB-INF目錄及其下面的web.xml文件),默認配置下,webapps下的每一個目錄都是一個Context。
  • Wrapper: 每一個Wrapper封裝者一個Servlet

配置方法

Engine和Host的配置

默認的配置以下(已加中文註釋)spa

<?xml version='1.0' encoding='utf-8'?>

<!-- 在8005端口 監聽SHUTDOWN命令-->
<Server port="8005" shutdown="SHUTDOWN">

  <!-- 定義一個名字Catalina的Service -->
  <Service name="Catalina">

     <!-- 定義一個Connector,在8080端口箭頭HTTP的請求 -->
     <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
   
     <!-- 定義一個Connector,在8009端口箭頭AJP的請求 -->
     <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

     <!-- 定義一個名字爲Catalina,默認Host爲localhost -->
     <Engine name="Catalina" defaultHost="localhost">

        <!-- 
             定義一個名字爲localhost的Host(也是Engine定義的默認Host),
             appBase="webapps" 該Host的默認目錄爲webapps
             unpackWARs="true" 自動解壓war包
             autoDeploy="true" 自動部署
        -->
       <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
         <!-- Host的別名-->
         <Alias>xxx</Alias>       
       </Host>

     </Engine>
  </Service>
</Server>

在定義Engine的時候,defaultHost表示當請求的域名在全部host中都找不到的時候,使用默認的Host。code

注:若是使用IP來訪問也會使用defaultHost。xml

注:全部Service是共享Connector的接口

Context的配置

Context有三種配置方式:生命週期

  1. 經過文件配置
  2. 將WAR包直接放在Host定義的appBase的路徑下
  3. 將應用的文件直接放在Host定義的appBase的路徑下
相關文章
相關標籤/搜索