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的路径下
相关文章
相关标签/搜索