Tomcat 基本配置
tomcat读取配置文件
首先简单说一下tomcat是如何读取配置文件的。tomcat在启动时,首先找系统变量CATALINA_BASE,如果没有,则找CATALINA_HOME。然后找这个变量所指的目录下的conf文件夹,从中读取配置文件。
最重要的配置文件:server.xml
要配置tomcat,基本上了解server.xml,context.xml和web.xml就可以了。在Tomcat中,都有这几个文件的默认文件,如server.xml的内容如下:The Server Component
顶层元素为<server>,这个元素对应着Tomcat结构中的server部分。这一行的意思是让Tomcat在8005端口监听关闭消息,如果使用telnet连接8005端口并输入SHUTDOWN,则tomcat就会关闭。为了安全,tomcat不会接受远程通过这个端口发的消息。
<Server>还有一些其他属性,如果不做配置的话,这些属性将使用默认值,下面是这些属性的介绍。
属性 | 描述 | 是否必须? |
className | 表示server的类,需要实现org.apache.catalina.Server接口。tocmat6默认值使用rg.apache.catalina.core.StandardServer | 否 |
port | 用来监听shutdown属性所对应的那个命令,实现关闭tomcat操作的TCP端口。tocmat会检查连接是否来自同一台机器,只有同一台机器(物理地址)发来的消息才被接受。 | 是 |
shutdown | tomcat会监听port所规定的端口,来接受这个属性所规定的命令 | 是 |
属性 | 描述 | 数量 |
<Service> | 包括一组和一个<Engine>相关联的<Connector>。这些Connector可以并发地接收各种协议的请求,并交给<Engine>来处理 | 1 or more |
<Listener> | 用来监听Server生命周期(start, stop, before start, after start, before stop, after stop)信息 | 0 or more |
<GlobalNamingResources> | 整个tomcat实例都可以使用的JNDI资源 | 0 or more |
The Service Component
Service component包括一组Connector和一个Engine,这些Connector监听不同端口不同协议的请求,并且这些Connector是并发执行的,Engine则被用来处理这些请求。在默认的server.xml中,service标签的内容如下:
<Service name=”Catalina”>
<service>可以有以下属性:
属性 | 描述 | 必需? |
className | service compoent所对应的java类,默认实现org.apache.catalina.core.StandServic | 否 |
name | service的name,通常在administration,management和logging中使用 | 是 |
子元素 | 描述 | 数量 |
Connector | 作用为处理外部的连接请求并将其发送给Engine处理。一个Connector拥有几个线程和相应资源来处理这些请求。 | 1 or more |
Engine | 常用类型有两种,Catalina和Standalone。Engine是用来处理Connector发过来的请求的。 | 1 |
The Connector Component
tomcat6提供了两种Connector,分别为HTTP/1.1和AJP/1.3。这两种Connector在默认的server.xml中的配置为:
The Engine Component
Engine在server.xml中的代码如下:
一个Engine就是一个容器,servlet容器。一个Engine可以处理多个虚拟Host(apache中的概念)的请求。当Engine不知该将请求交给那个host时,Engine则将请求转给defaultHost来处理。
<Engine>的属性如下表所示:
属性 | 描述 | 必需? |
className | Engine所对应的java类,默认使用org.apache.catalina.core.StandardEngine | 否 |
backgroundProcessDelay |
单位为秒,在这个属性所定义的时间之后,此Engine将进入后台处理。如果该值为负,则直接进入后台处理。后台处理一般用于处理低优先级的任务。
|
否 |
defaultHost | 当Engine找不到请求对应的host时,就使用这个host | 是 |
jvmRoute | 这是tomcat6在负载均衡中使用的标识符, | 否 |
name | Engine的名称 | 是 |
子元素 | 描述 | 数量 |
Host | 每个<Host>元素都表示一个由Engine支配的虚拟主机(virtual host) | 1 or more |
Context | 一组属性-元素的配置集合。在默认的context定义的属性可以被Engine中所有的web应用程序所使用。 | 0 or 1 |
Realm | 用于身份验证等安全机制,Engine和Context都可以由Realm。如果不指定,则使用Engine的Realm。 | 0 or 1 |
Valve | Standard Valve用于登陆日志,请求过滤等 | 0 or more |
Listener | 用于tomcat生命周期控制 | 0 or more |
The Realm Component
在默认的server.xml中,Engine中的第一个子标签就是<Realm>了,其代码如下:
<Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserD