下载与安装

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