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"/>
等元素。在后续章节中,将逐一介绍各个元素以及它的属性的用法。