下载与安装
从 Tomcat 官网下载 Core 包:https://tomcat.apache.org/download-90.cgi
解压命令:
tar -zxvf apache-tomcat-9.0.98.tar.gz
mv apache-tomcat-9.0.98 ../servers/apache-tomcat-9.0.98
核心配置文件
核心配置在 conf/server.xml 文件中。
主要标签详解
Server 标签
- port: 关闭服务器的监听端口
- shutdown: 关闭服务器的指令字符串
<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"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml" />
</GlobalNamingResources>
<Service name="Catalina"></Service>
</Server>
Service 标签
用于创建 Service 实例,默认使用:org.apache.catalina.core.StandardService
子标签包括:
- Listener: 用于为Service添加生命周期监听器
- Executor: 用于配置Service共享线程池
- Connector: 用于配置Service包含的链接器
- Engine: 用于配置Service中链接器对应的Servlet容器引擎
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"/>
关键属性说明:
- name: 线程池名称,用于 Connector 中指定
- maxThreads: 池中最大线程数
- minSpareThreads: 活跃线程数(核心池线程数),不会被销毁
- maxIdleTime: 线程空闲时间,超过后空闲线程会被销毁
- maxQueueSize: 被执行前最大线程排队数目
Connector 标签
用于创建链接器实例。默认配置了两个链接器:一个支持HTTP协议,一个支持AJP协议。
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
关键属性:
- port: 端口号
- protocol: 支持的访问协议,默认为 HTTP/1.1
- connectionTimeout: 接收链接后的等待超时时间
- redirectPort: SSL重定向端口
- executor: 指定共享线程池名称
- URIEncoding: URI字符编码,Tomcat8.x默认UTF-8
Engine 标签
Servlet 引擎
- name: 指定Engine的名称,默认是Catalina
- defaultHost: 默认使用的虚拟主机名称
<Engine name="Catalina" defaultHost="localhost"></Engine>
Context 标签
用于配置一个Web应用
- docBase: Web应用目录或War包部署路径
- path: Web应用的Context路径
<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 "%r" %s %b" />
</Host>