您的位置:首页 > 运维架构 > Tomcat

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

2016-12-18 20:27 645 查看
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包装Executor、Connector、Engine,以组成一个完整的服务。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处理完请求后,将结果返回给Engine,Engine再将结果返回给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 方式记录的值更多。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  tomcat java Web server.xml