Tomcat 的 server.xml 配置文件被格式化为无模式 XML,元素和属性区分大小写。支持 Apache Ant 风格的变量替换;可以使用语法 ${propname} 在配置文件中使用名为 propname 的系统属性。所有系统属性都可用,包括使用 -D 语法设置的属性、由 JVM 自动提供的属性以及在 $CATALINA_BASE/conf/catalina.properties 文件中配置的属性。
server.xml 的配置元素分为以下几个主要类别:
<Server> 元素是整个 server.xml 配置文件的根元素,而 <Service> 元素则代表一组与引擎关联的连接器。配置如下:
<?xml version='1.0' encoding='utf-8'?>
<Server port="8005" shutdown="SHUTDOWN">
...
<Service name="Catalina">
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="150" minSpareThreads="4"/>
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
<Engine name="Catalina" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.LockOutRealm">
...
</Realm>
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
...
</Host>
</Engine>
</Service>
</Server>表示向特定服务发送请求(并接收来自特定服务的响应)的外部客户端之间的接口。配置如下:
<?xml version='1.0' encoding='utf-8'?>
<Server port="8005" shutdown="SHUTDOWN">
...
<Service name="Catalina">
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="150" minSpareThreads="4"/>
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
...
</Service>
</Server>表示其功能是处理传入请求的组件,并创建相应的响应。Engine 处理对 Service 的所有请求,Host 处理对特定虚拟主机的所有请求,Context 处理对特定 Web 应用程序的所有请求。配置如下:
<?xml version='1.0' encoding='utf-8'?>
<Server port="8005" shutdown="SHUTDOWN">
...
<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>
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
...
<Valve .../>
</Host>
</Engine>
</Service>
</Server>表示可以嵌套在 Container 元素内的元素。有些元素可以嵌套在任何 Container 中,而有些元素只能嵌套在 Context 中。例如:
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>等元素。在后续章节中,将逐一介绍各个元素以及它的属性的用法。