tomcat中server.xml以及核心组件讲解

闲暇时间整理下对于tomcat中server.xml以及tomcat核心组件的理解,
有些不准确的地方还望及时指正,请转发时尊重作者的劳动成果,注明出处。

  • 默认server.xml以及相关内容诠释


<Server port="8005" shutdown="SHUTDOWN">
  
  <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
  
  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
  
  <Listener className="org.apache.catalina.core.JasperListener" />
  
  <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
  
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
  
  <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />

  
  <GlobalNamingResources>
    <Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
              description="User database that can be updated and saved"
              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
              pathname="conf/tomcat-users.xml" />
  GlobalNamingResources>

  <Service name="Catalina">
    

    
    <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
    
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

    <Engine name="Catalina" defaultHost="localhost">
      
      <Realm className="org.apache.catalina.realm.LockOutRealm">
        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
               resourceName="UserDatabase"/>
      Realm>

      
      <Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="true">

        

        
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="%h %l %u %t "%r" %s %b" />
      Host>
    Engine>
  Service>
Server>
  • 核心组件结构图
    tomcat中server.xml以及核心组件讲解_第1张图片
    1. 唯一的tomcat容器对应唯一的server组件;
    2. server组件包括多个service服务,服务这个词的定义需要根据各位自己的理解了,我暂时将它理解为系统;
    3. connector作为service服务的连接器,主要负责service的出入口,提供http、https、ajp等协议的支持;
    4. 唯一的service对应唯一的engine,可理解为引擎,一个系统有且仅有一个引擎;
    5. engine下对应多个虚拟主机,支持engine的运转;
    6. context可以理解为‘应用’,每个虚拟主机下有一系列的应用,当然这些应用都是独立的,是否有影响也是要根据需求来定;
    7. wrapper就更加简单了,可以理解为每一个servlet就是一个wrapper,形形色色的wrapper组成了一个应用;
    8. 总结来说,我们要访问http://www.ziyoujiayuan.com/dagger/test.shtml这个路径的时候,忽略代理服务的应用,http就受到connector影响,www.ziyoujiayuan.com就会受到host影响,dagger自然就是context定义的了,而test.shtml就是一个wrapper。

如有不足的地方请及时指正,若读者对于tomcat容器的个性化定制以及底层实现原理感兴趣,欢迎及时评论,作者会按需及时更新相关内容。

你可能感兴趣的:(【运维-服务容器】Tomcat)