Tomcat核心组件概述

Tomcat官网

https://tomcat.apache.org

什么是Tomcat?

The Apache Tomcat® software is an open source implementation of the Java Servlet, JavaServer Pages, Java Expression Language and Java WebSocket technologies. 

Tomcat 文件目录含义

1、bin:主要用来存放命令,.bat是windows下,.sh是Linux下;
2、conf:主要用来存放tomcat的一些配置文件,如server.xml;
3、lib:存放tomcat依赖的一些jar包;
4、logs:存放tomcat在运行时产生的日志文件;
5、temp:存放运行时产生的临时文件;
6、webapps:存放应用程序;
7、work:存放tomcat运行时编译后的文件,比如JSP编译后的文件。

Tomcat 架构图

核心组件

Server 

Server 可以理解为 Tomcat 的实例,代表了整个容器,一个 Server 中可以有一个或多个 Service 组件。

Service

Service 是 Server 内部的中间组件,它将一个或多个 Connector 绑定到一个Engine 上。

Connector

Connector 是服务端与客户端的通信桥梁。Tomcat 提供了多个连接器。其中包括用于大多数 HTTP 通信的 HTTP Connector,以及将 Tomcat 连接到 web 服务器(如Apache HTTPD 服务器)时使用的 AJP 协议的 AJP Connector。

Engine

Engine 代表服务请求处理管道。由于服务可能有多个 Connector 连接器, Engine 负责接收并处理来自这些 Connector 的所有请求,并将响应返回给对应的 Connector,最终返回给客户端。

Host

Host 代表虚拟主机,一个 Engine 可能包含多个 Host,一个 Host 下又可以部署一个或多个Web App,每个Web App 对应一个 Context。

Context

Context 代表 web应用程序(Web App),每个 Context 在 Host 中都有一个唯一路径。

嵌套组件

Excutor

执行器,供 Connector 使用的线程池,可配置多个。

Manager

会话管理器:用于实现http会话管理的功能。

Loader

类加载器

Valve

阀门:Tomcat 组件层面的过滤器。

Resource

资源路径:配置 web 程序的资源信息,如数据库连接信息。

Realm

领域:用于用户的认证和授权。

Listener

监听器:监听已注册组件的生命周期。

Cluster

集群:专用于配置 Tomcat 集群的元素。

server.xml

可以看到,server.xml 文件中的每一个标签都与上面提到的组件相对应,同时也可以清楚的反映组件之间的包含关系。

<?xml version="1.0" encoding="UTF-8"?>

<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.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 &quot;%r&quot; %s %b" />

      </Host>
    </Engine>
  </Service>
</Server>
发布了149 篇原创文章 · 获赞 100 · 访问量 18万+

猜你喜欢

转载自blog.csdn.net/u011212394/article/details/103675028