欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 家装 > Java-47 深入浅出 Tomcat 核心架构 核心配置详解 主要标签配置详解 Server、Service、Executor、Engine等等

Java-47 深入浅出 Tomcat 核心架构 核心配置详解 主要标签配置详解 Server、Service、Executor、Engine等等

2025/10/21 13:43:10 来源:https://blog.csdn.net/w776341482/article/details/148682193  浏览:    关键词:Java-47 深入浅出 Tomcat 核心架构 核心配置详解 主要标签配置详解 Server、Service、Executor、Engine等等

点一下关注吧!!!非常感谢!!持续更新!!!

🚀 AI篇持续更新中!(长期更新)

目前2025年06月13日更新到:
AI炼丹日志-28 - Audiblez 将你的电子书epub转换为音频mp3 做有声书,持续打造实用AI工具指南!📐🤖

💻 Java篇正式开启!(300篇)

目前2025年06月11日更新到:
Java-44 深入浅出 Nginx - 底层进程机制 Master Worker 机制原理 常用指令
MyBatis 已完结,Spring 已完结,深入浅出助你打牢基础!

📊 大数据板块已完成多项干货更新(300篇):

包括 Hadoop、Hive、Kafka、Flink、ClickHouse、Elasticsearch 等二十余项核心组件,覆盖离线+实时数仓全栈!
目前2025年06月13日更新到:
大数据-278 Spark MLib - 基础介绍 机器学习算法 梯度提升树 GBDT案例 详解

请添加图片描述

下载文件

https://tomcat.apache.org/download-90.cgi

我们需要下载 Core包
在这里插入图片描述

我们先下载到 Tomcat 的包:
在这里插入图片描述

解压文件

tar -zxvf apache-tomcat-9.0.98.tar.gz

执行结果如下所示:
在这里插入图片描述
移动目录:

mv apache-tomcat-9.0.98 ../servers/apache-tomcat-9.0.98

去哪里配置

核心配置在 conf/server.xml 中

如何配置

● Tomcat作为服务器的配置,主要是 server.xml 文件的配置
● server.xml 中包含了Servlet容器的相关配置,即Catalina的配置
● XML 文件的讲解主要是标签的使用

主要标签

主要的标签内容如下:

<Server><!--定义监听器--><Listener/><!--定义服务器的全局JNDI资源 --><GlobalNamingResources/><!--定义⼀个Service服务,⼀个Server标签可以有多个Service服务实例--><Service/>
</Server>

Server根元素,创建一个Server实例,子标签有:Listener、Global、NamingResources

Server标签

● port 关闭 服务器的监听端口
● shutdown 关闭服务器的指令字符串

<Server port="8005" shutdown="SHUTDOWN"><!-- 以⽇志形式输出服务器 、操作系统、JVM的版本信息 --><Listener className="org.apache.catalina.startup.VersionLoggerListener" /><!-- Security listener. Documentation at /docs/config/listeners.html<Listener className="org.apache.catalina.security.SecurityListener" />--><!--APR library loader. Documentation at /docs/apr.html --><!-- 加载(服务器启动) 和 销毁 (服务器停⽌) APR。 如果找不到APR库, 则会输出⽇志, 并
不影响 Tomcat启动 --><Listener className="org.apache.catalina.core.AprLifecycleListener"
SSLEngine="on" /><!-- Prevent memory leaks due to use of particular java/javax APIs--><!-- 避免JRE内存泄漏问题 --><Listener
className="org.apache.catalina.core.JreMemoryLeakPreventionListener" /><!-- 加载(服务器启动) 和 销毁(服务器停⽌) 全局命名服务 --><Listener
className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" /><!-- 在Context停⽌时重建 Executor 池中的线程, 以避免ThreadLocal 相关的内存泄漏 --><Listener
className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" /><!-- Global JNDI resourcesDocumentation at /docs/jndi-resources-howto.htmlGlobalNamingResources 中定义了全局命名服务--><GlobalNamingResources><!-- Editable user database that can also be used byUserDatabaseRealm to authenticate users--><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><!-- A "Service" is a collection of one or more "Connectors" that sharea single "Container" Note: A "Service" is not itself a "Container",so you may not define subcomponents such as "Valves" at this level.Documentation at /docs/config/service.html--><Service name="Catalina">...</Service>
</Server>

对应的截图如下所示:
在这里插入图片描述

Service 标签

Service 标签⽤于创建 Service 实例,默认使⽤:org.apache.catalina.core.StandardService。

默认情况下,Tomcat 仅指定了Service 的名称, 值为 “Catalina”。
Service ⼦标签为 : Listener、Executor、Connector、Engine,

● Listener ⽤于为Service添加⽣命周期监听器
● Executor ⽤于配置Service 共享线程池
● Connector ⽤于配置Service 包含的链接器
● Engine ⽤于配置Service中链接器对应的Servlet 容器引擎

<Service name="Catalina">...
</Service>

对应的截图如下所示:
在这里插入图片描述

Executor标签

<!-- 默认情况下,Service 并未添加共享线程池配置。 如果我们想添加⼀个线程池, 可以在
<Service> 下添加如下配置:name:线程池名称,⽤于 Connector中指定namePrefix:所创建的每个线程的名称前缀,⼀个单独的线程名称为
namePrefix+threadNumbermaxThreads:池中最⼤线程数minSpareThreads:活跃线程数,也就是核⼼池线程数,这些线程不会被销毁,会⼀直存在maxIdleTime:线程空闲时间,超过该时间后,空闲线程会被销毁,默认值为6000(1分钟),单位
毫秒maxQueueSize:在被执⾏前最⼤线程排队数⽬,默认为Int的最⼤值,也就是⼴义的⽆限。除⾮特
殊情况,这个值 不需要更改,否则会有请求不会被处理的情况发⽣prestartminSpareThreads:启动线程池时是否启动 minSpareThreads部分线程。默认值为
false,即不启动threadPriority:线程池中线程优先级,默认值为5,值从1到10className:线程池实现类,未指定情况下,默认实现类为 
org.apache.catalina.core.StandardThreadExecutor。如果想使⽤⾃定义线程池⾸先需要实现
org.apache.catalina.Executor接⼝
-->
<Executor name="commonThreadPool"namePrefix="thread-exec-"maxThreads="200"minSpareThreads="100"maxIdleTime="60000"maxQueueSize="Integer.MAX_VALUE"prestartminSpareThreads="false"threadPriority="5"className="org.apache.catalina.core.StandardThreadExecutor"/>

截图如下所示:
在这里插入图片描述

Connector 标签

Connector 标签用于创建链接器实例,默认情况下,server.xml 配置了两个链接器,一个支持HTTP协议,一个支持AJP协议。大多数情况下,我们并不需要新增链接器配置,只需要根据需要对已有的链接器进行优化即可。

<!--
port:端⼝号,Connector ⽤于创建服务端Socket 并进⾏监听, 以等待客户端请求链接。如果该属性设置
为0, Tomcat将会随机选择⼀个可⽤的端⼝号给当前Connector 使⽤
protocol:当前Connector ⽀持的访问协议。 默认为 HTTP/1.1 , 并采⽤⾃动切换机制选择⼀个基于 JAVA
NIO 的链接器或者基于本地APR的链接器(根据本地是否含有Tomcat的本地库判定)
connectionTimeOut:
Connector 接收链接后的等待超时时间, 单位为 毫秒。 -1 表示不超时。
redirectPort:当前Connector 不⽀持SSL请求, 接收到了⼀个请求, 并且也符合security-constraint 约束,
需要SSL传输,Catalina⾃动将请求重定向到指定的端⼝。
executor:指定共享线程池的名称, 也可以通过maxThreads、minSpareThreads 等属性配置内部线程池。
URIEncoding:⽤于指定编码URI的字符编码, Tomcat8.x版本默认的编码为 UTF-8 , Tomcat7.x版本默认为ISO-
8859-1
-->
<!--org.apache.coyote.http11.Http11NioProtocol , ⾮阻塞式 Java NIO 链接器-->
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

Engine 标签

Engine标签 Servlet 引擎
● name:指定Engine的名称,默认是Catalina
● defaultHost 默认使用的虚拟主机名称,当客户端请求指向的主机无效时 将交由默认的虚拟机处理

<Engine name="Catalina" defaultHost="localhost">...
</Engine>

对应的截图如下所示:
在这里插入图片描述

Context标签

Context标签用于配置一个Web应用
● docBase:Web应用目录或者War包的部署路径,可以是绝对路径,也可以是相对于 Host appBase的相对路径
● path:Web应用的Context路径,如果我们Host名称为localhost,则根目录是 http://localhost:8080/web_demo

<Host name="www.abc.com" appBase="webapps" unpackWARs="true"
autoDeploy="true"><Context docBase="web_demo" path="/web3"></Context> <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>

对应的截图如下所示:
在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词