思考集结处

vuePress-theme-reco 思考集结处    2024
思考集结处 思考集结处

Choose mode

  • dark
  • auto
  • light
首页
标签
分类
  • AI
  • Docker
  • 分布式事务
  • 文件存储
  • 框架
  • Spring
  • java
  • 其他
  • 搜索引擎
  • 源码
  • 网站
Java
网站
容器技术
搜索引擎
分布式事务
源码系列
框架系列
文件存储
AI
其他
GitHub
author-avatar

思考集结处

43

文章

18

标签

首页
标签
分类
  • AI
  • Docker
  • 分布式事务
  • 文件存储
  • 框架
  • Spring
  • java
  • 其他
  • 搜索引擎
  • 源码
  • 网站
Java
网站
容器技术
搜索引擎
分布式事务
源码系列
框架系列
文件存储
AI
其他
GitHub
  • 源码分析
  • Tomcat的源码编译
  • Tomcat 架构分析
  • Tomcat 生命周期原理
  • Tomcat 启动流程

Tomcat 架构分析

vuePress-theme-reco 思考集结处    2024

Tomcat 架构分析

思考集结处 2021-10-28 Tomcat

Tomcat架构分析

# Tomcat 架构分析

Tomcat是我们web应用开发,最常用中间间之一,以至于我们很随便的就能使用它,但是知其然更应知其所以然,所以我们需要对Tomcat的源码研究研究。

# Tomcat整体架构

看一个框架或者服务器的时候我们首先需要看一下他的配置文件,这样的话能对我们研究的东西有一个整体的把我,现在我们看一下Tomcat在conf目录下的配置文件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" />
    <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>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32

根据该配置文件的层级关系我们能够很清晰的了解到Tomcat的全貌,<Server>标签表示Tomcat这个服务器,该服务器下有可以有很多个<Service>服务,每一个服务下 有连接器<Connector>和引擎<Engine>,引擎下又有主机<Host>,我们知道Tomcat是用来部署我们的应用的,所以我们的Context-应用肯定时需要Host来管理的。 在配置文件里我们还看到一堆<Listener>监听器,我们进行大胆的推测,这些监听器肯定时通过监听事件来进行驱动每一个组件的运行。

# 架构简图

这个图就是我们通过分析,配置文件加推理出来的Tomcat的简易架构图。

# 小结

本章我们通过对Tomcat的配置文件进行分析,能够在整体的维度上把我Tomcat的设计,以及对其核心的组件,有一个大概的认识,从整体来把我Tomcat。接下来我们会对Tomcat涉及 到的相关内容进行分析。

我是思考集结处欢迎你的关注
看板娘