tomcat 的目录结构如下:
目录名 | 简介 |
bin | 存放启动和关闭 tomcat 脚本 |
conf | 包含不同的配置文件 ,server.xml(Tomcat 的主要配置文件 ) 和 web.xml |
work | 存放 jsp 编译后产生的 class 文件 |
webapps | 存放应用程序示例,以后你要部署的应用程序也要放到此目录 |
logs | 存放日志文件 |
lib | 这三个目录主要存放 tomcat 所需的 jar 文件 |
server.xml 配置详解
元素名 | 属性 | 解释 |
server | port shutdown | 指定一个端口,这个端口负责监听关闭 tomcat 的请求 |
GlobalNamingResources | name | 服务器的全局 JNDI 资源,可以有子标签 <Resource></Resource> |
Executor | name | 线程池名称,名称必须唯一 一个或多个 Connector 可以共享此线程池 |
(boolean)daemon | 是否是守护程序运行,默认为true | |
namePrefix | 线程的名字前缀,用来标记线程名字的,这样每个线程就用这个前缀加上线程编号了,比如 catalina-exec-1 、catalina-exec-2 | |
(int)maxThreads | 允许的最大线程池里的线程数量,默认是200,大的并发应该设置的高一些,反正只是限制而已,不占用资源 | |
(int)minSpareThreads | 最小的保持活跃的线程数量,默认是 25. 这个要根据负载情况自行调整了。太小了就影响反应速度,太大了白白占用资源 | |
(int) maxIdleTime | 线程空闲时间,超过最小活跃线程数量的线程,如果空闲时间超过这个设置后,会被关别。默认是1分钟。 | |
(int)threadPriority | 线程的等级。默认是 Thread.NORM_PRIORITY | |
Connector | port | 指定服务器端要创建的端口号,并在这个断口监听来自客户端的请求 |
protocol | 指定通讯协议 | |
executor | 指定使用的线程池 | |
minProcessors | 服务器启动时创建的处理请求的线程数, 初始化时创建的线程数 | |
maxProcessors | 最大可以创建的处理请求的线程数 | |
(boolean)allowTrace | 是否启用http跟踪,默认为false | |
(boolean)emptySessionPath | 如果设置为true,则所有的session cookies的路径都为/,默认为false | |
(boolean)enableLookups | 如果为 true ,则可以通过调用 request.getRemoteHost() 进行 DNS 查询来得到远程客户端的实际主机名,若为 false 则不进行 DNS 查询,而是返回其 ip 地址,默认为true | |
maxPostSize | 默认2097152字节(2m) | |
maxSavePostSize | 默认4096字节(4k) | |
proxyName | 如果配置的是proxy模式,则request.getServerName() 返回这里配置的值 | |
proxyPort | 如果配置的是proxy模式,则request.getServerPort() 返回这里配置的值 | |
redirectPort | 指定服务器正在处理http请求时收到了一个SSL传输请求后重定向的端口号 | |
SSLEnabled | 是否启用ssl | |
scheme | 默认http | |
secure | ||
URIEncoding | 字符编码,默认ISO-8859-1 | |
useBodyEncodingForURI | 表明如果contentType指定的编码用于URI查询参数,则不用URIEncoding。与Tomcat4.1.x兼容。默认为false | |
useIPVHosts | 默认false | |
xpoweredBy | 默认false | |
http额外属性 | ||
acceptCount | 指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理,默认10 | |
address | 默认为机器的所有ip | |
bufferSize | 默认2048字节(2k),Connector创建的输入流的大小,提高这个值可以提升性能,增加内存消耗。 | |
compressableMimeType | 使用HTTP压缩的MIME类型,使用逗号分割,默认值是text/html,text/xml,text/plain | |
compression | 为了节省带宽,可以将这个值设置为on,从而启用HTTP/1.1 GZIP压缩。off关闭压缩,forces强制使用压缩,默认值是off。 | |
compressionMinSize | 启用压缩的输出内容大小,这里面默认为 2KB | |
noCompressionUserAgents | 不启用压缩的浏览器,默认为空 | |
connectionLinger | 默认-1 | |
connectionTimeout | 指定超时的时间数 ( 以毫秒为单位 ),默认60000(1分钟) | |
keepAliveTimeout | 默认值与connectionTimeout相同 | |
maxKeepAliveRequests | 默认值100 | |
disableUploadTimeout | 默认为true | |
maxHttpHeaderSize | 默认值为4096 (4 KB). | |
maxThreads | 允许的最大线程池里的线程数量,默认值40,如果指定了 executor,则该值无效 | |
maxProcessors | 最大可以创建的处理请求的线程数 | |
debug |
AJP配置:
AJP Connector是一个基于AJP协议的 Connector组件,用于apahce和tomcat的集成使用。
这个组件可与Engine .结合使用,达到负载均衡。
元素名 | 属性 | 解释 |
公共属性Common Attributes,使用ajp,必须指定以下属性 | ||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||
AJP 1.3支持的实现 | ||||||||||||||||||||||||||||||||||||||||||||||||||
Connector | address | 默认为机器的所有ip | ||||||||||||||||||||||||||||||||||||||||||||||||
port | 指定服务器端要创建的端口号,并在这个断口监听来自客户端的请求 | |||||||||||||||||||||||||||||||||||||||||||||||||
backlog | 指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理,默认10 | |||||||||||||||||||||||||||||||||||||||||||||||||
bufferSize | 输出缓冲区的大小,小于等于0时,输出缓冲被禁用,默认为-1
| |||||||||||||||||||||||||||||||||||||||||||||||||
executor | 指定使用的线程池 | |||||||||||||||||||||||||||||||||||||||||||||||||
connectionTimeout |
Connector
接收连接后,等待提供请求
URI
的时间
.
缺省值为无限长(也就是没有超时)
.
| |||||||||||||||||||||||||||||||||||||||||||||||||
keepAliveTimeout | 默认值与connectionTimeout相同,在关闭链接前等待另一个AJP请求的时间,单位为毫秒 | |||||||||||||||||||||||||||||||||||||||||||||||||
maxThreads | 允许的最大线程池里的线程数量,默认值40,如果指定了 executor,则该值无效 | |||||||||||||||||||||||||||||||||||||||||||||||||
tomcatAuthentication | 如果设置为true,验证在JBoss Web中完成。否则,主体在在本地web服务器被验证后,传递到JBoss Web中授权。缺省值为true。 | |||||||||||||||||||||||||||||||||||||||||||||||||
tcpNoDelay |
该值为
true
,服务器的
socket
将使用
TCP_NO_DELAY
选项,大部分情况下该选
项可以提升性能。缺省值为
true
。
|
无嵌套组件Nested Components 。
host配置:
元素名 | 属性 | 解释 |
Host | name | 指定主机名 |
appBase | 应用程序基本目录,即存放应用程序的目录 | |
autoDeploy | 如果此项设为true,表示当Tomcat服务器处于运行状态时,能够监测appBase下的文件,如果有新的Web应用加入进来,会自动发布这个Web应用. 默认为true | |
backgroundProcessorDelay | 默认为-1 | |
className | 指定 Realm 使用的类名,此类必须实现 org.apache.catalina.Realm 接口 密码及 role 的数据库 ) | |
deployOnStartup | 如果此项设为true,表示Tomcat服务器启动时会自动发布appBase目录下的所有Web应用,如果Web应用在server.xml中没有相应的<Context>元素,将采用Tomcat默认的Context 默认为true | |
以下为Standard Implementation | ||
deployXML | 默认为true | |
errorReportValveClass | ||
unpackWARs | 如果为 true ,则 tomcat 会自动将 WAR 文件解压,否则不解压,直接从 WAR 文件中运行应用程序 | |
workDir | ||
Alias | 指定虚拟主机的别名,可以指定多个别名. | |
xmlValidation | ||
xmlNamespaceAware |
Context配置:
元素名 | 属性 | 解释 |
Context | path | 虚拟目录名称,默认项目配"" |
docBase | 物理路径 | |
reloadable | 如果希望Catalina监视/WEB-INF/classes/和/WEB-INF/lib下面的类是否发生变化,在发生变化的时候自动重载web application,设为true。这个特征在开发阶段很有用,但也大大增加了服务器的开销。因此,在发布以后,不推荐使用。但是,你可以使用 Manager应用在必要的时候触发应用的重载。 | |
backgroundProcessorDelay | 这个值代表在context及其子容器(包括所有的wrappers)上调用backgroundProcess方法的延时,以秒为单位。如果延时值非 负,子容器不会被调用,也就是说子容器使用自己的处理线程。如果该值为正,会创建一个新的线程。在等待指定的时间以后,该线程在主机及其 子容器上调用backgroundProcess方法。context利用后台处理session过期,监测类的变化用于重新载入。如果没有指定,该属性 的缺省值是-1,说明context依赖其所属的Host的后台处理。 | |
className | 实现的Java类名。该类必须实现org.apache.catalina.Context接口。如果没有指定,使用标准实现(在下面定义) | |
deployOnStartup | 如果此项设为true,表示Tomcat服务器启动时会自动发布appBase目录下的所有Web应用,如果Web应用在server.xml中没有相应的<Context>元素,将采用Tomcat默认的Context 默认为true | |
cookies | 如果想利用cookies来传递session identifier(需要客户端支持cookies),设为ture。否则为false,这种情况下只能依靠URL Rewriting传递session identifier。 | |
crossContext | 如果想在应用内调用ServletContext.getContext()来返回在该虚拟主机上运行的其他web application的request dispatcher,设为true。在安全性很重要的环境中,设为false,使得getContext()总是返回null。缺省值为false。 | |
override | 如果想利用该Context元素中的设置覆盖DefaultContext中相应的设置,设为true。缺省情况下使用DefaultContext中的设置。 | |
privileged | 设为true,允许context使用container servlets,比如manager servlet。 | |
wrapperClass | org.apache.catalina.Wrapper实现类的名称,用于该Context管理的servlets。如果没有指定,使用标准的缺省值。 |