Tomcat 服务器有一系列可配置的组件构成,这些组件与 %CATALINA_HOME%\conf\server.xml 文件中的各元素相对应,组件的配置也是通过 server.xml 文件中的元素来完成的。这些元素可以分为以下 4 类。
(1) 顶层元素
包括<Server> 和 <Service> 元素. <Server> 元素使整个配置文件的元素, <Service> 元素表示了一个与引擎相关的一组连接器.
Server 元素
Server 元素是 server.xml 的根元素, 表示整个的 Catalina Servlet 容器, 它的属性表示了作为一个整体的 Servlet 容器的特性.
Server 元素的属性描述如下表:
Server 元素的属性
属性 | 描述 |
className | 指定实现了 org.apache.catalina.Server 接口的类名. 如果没有类名, 将使用标准的实现. 标准的实现是 org.apache.catalina.core.StandardServer |
port | 指定 Tomcat 服务监听 shutdown 命令的 TCP/IP 端口号. 关闭 Tomcat 服务时, 必须从当前正在运行 Tomcat 实例的服务器上发出 shutdown 命令. 该属性是必须的. |
shutdown | 指定通过 TCP/IP 连接发送到 Tomcat 服务器监听 shutdown 命令的端口上的命令字符串, 用于关闭 Tomcat 服务器, 该命令是必须的. |
下面是 Server 元素的一个例子:
<Server port="8005" shutdown="SHUTDOWN">
在 Server 元素中, 可以嵌套 Service 元素和 GlobalNamingResources 元素.
Service 元素
Service 元素表示了一个或多个连接器 (Connector) 组件的联合, 这些组件共享一个单独的引擎 (Engine) 组件来处理到来的请求. 一个或多个 Service 元素可以被嵌套在 Server 元素中.
Service 元素的属性描述如下表:
Service 元素
属性 | 描述 |
className | 指定实现了 org.apache.catalina.Service 接口的类名. 如果没有指定类名, 将使用标准的实现. 标准的实现类是 org.apache.catalina.core.StandardService |
name | 指定 Service 的名字. 如果你应用的是标准的 Catalina 组件, 指定的名字将被包含在日志消息中. 和特定的 Server 元素相关的每一个 Service 元素的名字必须是唯一的. 该属性是必须的. |
下面是 Service 元素的一个例子:
<Service name="Catalina">
在 Service 元素中, 可以嵌套 Connector 元素和 Engine 元素.
(2) 连接器
充当外部客户端发送请求到一个特定的 Service (或者从 Service 接收响应) 之间的接口.
HTTP 连接器
HTTP Connector 元素表示了支持 HTTP/1.1 协议的连接器组件. 它使 Catalina 可以作为一个独立的 Web 服务器运行. HTTP 连接器组件的实例在 Tomcat 服务器的指定 TCP 端口上监听, 等待客户端连接的到来.
Connector 元素的公共属性描述如下表:
HTTP Connector 元素的公共属性
属性 | 描述 |
allowTrace | 这是布尔类型的值, 用于指定是否允许 HTTP 的 TRACE 方法. 该属性的默认值为 false. |
emptySessionPath | 如果设置为 true, 用于会话 cookie 的所有路径都将被设置为/. 该属性的默认值为 false. |
enableLookups | 如果你想调用 request.getRemoteHost() 方法来执行 DNS 查询, 以返回远程客户端实际的主机名, 可以将这个属性设置为 true. 将该属性设置为 false, 将跳过 DNS 查询, 而直接返回字符串形式的 IP 地址 (也因此改善了性能). 默认情况下, DNS 查询是允许的. |
maxPostSize | 以字节为单位指定将被容器 FORM URL 参数解析处理的 POST 请求的最大尺寸. 如果没有指定该属性, 这个属性将被设置为 2097152 |
protocol | 该属性的值必须是 HTTTP/1.1, 这也是默认值. 如果使用 AJP 处理器, 则该属性的值必须是 AJP/1.3 |
proxyName | 如果这个连接器正在一个代理配置中使用, 那么配置这个属性, 指定当调用 request.getServerName() 方法时, 返回的服务器名字, 关于代理支持的更多信息, 请参见 %CATALINA_HOME%/webapps/tomcat-doc/config/http.html#Proxy.Support |
proxyPort | 如果这个连接器正在一个代理配置中使用, 那么配置这个属性, 指定当调用 request.getServerPort() 方法时, 返回的服务器端口号. |
redirectPort | 如果这个连接器支持非 SSL 的请求, 而此时接收到一个需要 SSL 传输的请求, 那么 Catalina 容器会自动将这个请求重定向到该属性所指定的端口号 |
scheme | 设置协议得名字, 这个名字将在调用 request.getScheme() 方法时返回. 例如, 你可以为一个 SSL 连接器设置这个属性为 "https". 该属性的默认值是 "http" |
secure | 如果你希望对接收到的请求调用 request.isSecure() 方法是返回 true, 那么可以设置这个属性为 true (你可能希望在 SSL 连接器上这样做). 该属性的默认值是 false |
URIEncoding | 指定用于解码 URI 字节的字符编码, 在 %xx 后解码 URL. 如果没有指定该属性, 将使用 ISO-8859-1 |
(3) 容器
负责处理客户端的请求, 并生成响应结果的组件. 容器类元素有 <Engine>, <Host> 和 <Context>, 其中 Engine 组件为特定的 Service 处理所有请求, Host 组件为特定虚拟主机处理所有请求, Context 组件为指定的的 Web 应用程序处理所有请求.
(4) 嵌套元素
表示可以在容器类元素中嵌套的元素. 一些元素可以在任何容器类中嵌套, 而另一些则只能在 <Context> 元素中嵌套. 嵌套的元素包括 <Loader>, <GlobalNamingResource>, <Resource>, <Manager>, <Realm>, <Resources> 和 <Valve> 等元素.