tomcat配置文件server.xml含义说明

来源:互联网 发布:淘宝店铺过户近亲属 编辑:程序博客网 时间:2024/04/20 18:28
tomcat的配置文件一般都在conf文件夹里,主要有server.xml,context.xml,tomcat_user.xml,web.xml四个常用配置文件,server.xml主要是服务器设置的,例如端口设置,路径设置。
下面对server.xml中tomcat的默认配置进行说明,了解含义之后,就可以根据自己的实际情况进行修改。
各组件关系图:
<Server port="8005" shutdown="SHUTDOWN"><Server>

Server即Catalina servlet组件,它是server.xml的最外层元素。

port="8005"——指定8005端口负监听tomcat的请求。若设置为-1,则禁止通过端口关闭Tomcat,同时shutdown.bat也不能使用。

shutdown="SHUTDOWN"——收到字符串"SHUTDOWN"表示关闭,修改shutdown的值,对shutdown.bat无影响。

 <!-- Security listener. Documentation at /docs/config/listeners.html  <Listener className="org.apache.catalina.security.SecurityListener" />  -->  <!--APR library loader. Documentation at /docs/apr.html -->  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />  <!--Initialize Jasper prior to webapps are loaded. Documentation at /docs/jasper-howto.html -->  <Listener className="org.apache.catalina.core.JasperListener" />  <!-- Prevent memory leaks due to use of particular java/javax APIs-->  <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />  <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />

Listener即监听器,负责监听特定的事件,当特定事件触发时,Listener会捕捉到该事件,并做出相应处理。Listener通常用在Tomcat的启动和关闭过程。Listener可嵌在Server、Engine、Host、Context内。

className=""——指定实现org.apache.catalina.LifecycleListener接口的类。


 <GlobalNamingResources>    <!-- Editable user database that can also be used by         UserDatabaseRealm to authenticate users    -->    <Resource name="UserDatabase" auth="Container"              type="org.apache.catalina.UserDatabase"              description="User database that can be updated and saved"              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"              pathname="conf/tomcat-users.xml" />  </GlobalNamingResources>

GlobalNamingResources用于配置JNDII(Java Naming and Directory Interface,Java命名和目录接口)。

<Service name="Catalina"></Service>

Service包装ExecutorConnectorEngine,以组成一个完整的服务。

className——指定实现org.apache.catalina. Service接口的类,默认值为org.apache.catalina.core.StandardService。

name———Service的名字。

Server可以包含多个Service组件。

<Connector port="8080" protocol="HTTP/1.1"               connectionTimeout="20000"               redirectPort="8443" />
Connector是Tomcat接收请求的入口,每个Connector有自己专属的监听端口。

port:"8080"——Connector监听客户服务的端口:8080。

protoco="HTTP/1.1"——Connector使用的协议(HTTP/1.1或AJP/1.3)。

connectionTimeout="20000"——每个请求的最长连接时间20000ms。

redirectPort="8443"——服务器正在处理Http请求时,为收到的SSL(Secure Sockets Layer 安全套接层)处理重定位端口:8443。

<Engine name="Catalina" defaultHost="localhost"></Engine>
Service内必须包含一个Engine组件,Service包含一个或多个Connector组件,Service内的Connector共享一个Engine。
Engine负责处理Service内的所有请求。它接收来自Connector的请求,并决定传给哪个Host来处理,Host处理完请求后,将结果返回给EngineEngine将结果返回给Connector。

name:"Catalina"——Engine的名字。

defaultHost="localhost"——指定默认处理请求的虚拟主机名:localhost。要求和Host name定义一致。
<Realm className="org.apache.catalina.realm.LockOutRealm"><Realm className="org.apache.catalina.realm.UserDatabaseRealm"       resourceName="UserDatabase"/>

Realm可以理解为包含用户、密码、角色的”数据库”。Tomcat定义了多种Realm实现:JDBC Database Realm、DataSource Database Realm、JNDI Directory Realm、UserDatabase Realm
className:""——指定Realm 使用的类名,此类必须实现org.apache.catalina.Realm 接口

 <Host name="localhost"  appBase="webapps"            unpackWARs="true" autoDeploy="true"></Host>

Host负责管理一个或多个Web项目.
name="localhost"——指定默认虚拟主机名:localhost。
appBase="webapps"——默认Web源代码存放目录,可以是war文件或目录。(绝对路径、相对路径均可)
unpackWARS="true"——是否自动将war文件解压,true-自动解压,false-直接从WAR文件运行Web项目。
autoDeploy="true"——是否开启自动部署。设为true,Tomcat检测到appBase有新添加的Web项目时,会自动将其部署。
其他属性:

startStopThreads-线程池内的线程数量。Tomcat启动时,Host提供一个线程池,用于部署Web项目。

startStopThreads为0,并行线程数=系统CPU核数。

startStopThreads为负数,并行线程数=系统CPU核数+startStopThreads,如果(系统CPU核数+startStopThreads)小于1,并行线程数设为1。

startStopThreads为正数,并行线程数= startStopThreads。

startStopThreads默认值为1。

startStopThreads为默认值时,Host只提供一个线程,用于部署Host下的所有Web项目。如果Host下的Web项目较多,由于只有一个线程负责部署这些项目,因此这些项目将依次部署,最终导致Tomcat的启动时间较长。此时,修改startStopThreads值,增加Host部署Web项目的并行线程数,可降低Tomcat的启动时间。

Tomcat配置多Host可参考此文:http://grass51.blog.51cto.com/4356355/1123400

<Valve className="org.apache.catalina.valves.AccessLogValve"        directory="logs"       prefix="localhost_access_log."        suffix=".txt"       pattern="%h %l %u %t "%r" %s %b" />

Valve可以理解为Tomcat的拦截器,而我们常用filter为项目内的拦截器。Valve可以用于Tomcat的日志、权限等。Valve可嵌在Engine、Host、Context内。

className=""——指定Valve 使用的类名,如用org.apache.catalina.valves.AccessLogValve 类可以记录应用程序的访问信息。

directory="logs"——指定log 文件存放的位置。

prefix=""——指定log 文件的前缀。

suffix=""——指定log 文件的后缀。

pattern=""——有两个值,common 方式记录远程主机名或ip 地址,用户名,日期,第一行请求的字符串,HTTP 响应代码,发送的字节数。combined 方式比common 方式记录的值更多。

1 0