Download and Installation

Download Core package from Tomcat official website: https://tomcat.apache.org/download-90.cgi

Extraction command:

tar -zxvf apache-tomcat-9.0.98.tar.gz
mv apache-tomcat-9.0.98 ../servers/apache-tomcat-9.0.98

Core Configuration File

Core configuration is in conf/server.xml file.

Main Tag Details

Server Tag

  • port: Shutdown server listening port
  • shutdown: Shutdown server command string
<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 Tag

Used to create Service instance, default uses: org.apache.catalina.core.StandardService

Sub-tags include:

  • Listener: Used to add lifecycle listener for Service
  • Executor: Used to configure shared thread pool for Service
  • Connector: Used to configure Connector included in Service
  • Engine: Used to configure Servlet container engine corresponding to Connector

Executor Tag (Thread Pool Configuration)

<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"/>

Key attribute descriptions:

  • name: Thread pool name, used for specifying in Connector
  • maxThreads: Maximum threads in pool
  • minSpareThreads: Active thread count (core pool thread count), won’t be destroyed
  • maxIdleTime: Thread idle time, idle threads will be destroyed after exceeding
  • maxQueueSize: Maximum thread queue number before execution

Connector Tag

Used to create Connector instance. Default configures two connectors: one supporting HTTP protocol, one supporting AJP protocol.

<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

Key attributes:

  • port: Port number
  • protocol: Supported access protocol, default is HTTP/1.1
  • connectionTimeout: Wait timeout after receiving connection
  • redirectPort: SSL redirect port
  • executor: Specify shared thread pool name
  • URIEncoding: URI character encoding, Tomcat8.x defaults to UTF-8

Engine Tag

Servlet engine

  • name: Specify Engine name, default is Catalina
  • defaultHost: Default virtual host name
<Engine name="Catalina" defaultHost="localhost"></Engine>

Context Tag

Used to configure a Web application

  • docBase: Web application directory or War package deployment path
  • path: Web application’s Context path
<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>