Tomcat的配置主要通过安装目录下conf子目录中的server.xml文件来完成。Tomcat由若干组件构成,每个组件对应server.xml中的一个结点,以下是该文件的结点结构:
<?xml version='1.0' encoding='utf-8'?>
<Server>
<Listener />
<GlobaNamingResources>
<Resource />
</GlobaNamingResources>
<Service>
<Connector />
<Engine>
<Realm>
<Realm />
<Realm>
<host>
<Context />
<Logger />
<Value />
</host>
</Engine>
</Service>
</Server>
Server节点
Tomcat实例的最顶层元素,对应Tomcat服务器,仅一个。
port:指定监听关闭Tomcat服务器请求的端口。端口用于标记网络上的一个进程,由此一个端口只能唯一的标记一台主机上的一个进程,但是一个进程可以对应多个端口。
shutdown:指定向上述端口发送的命令字符串。
Service节点
监听来自客户端的http请求,一个Server节点可以有多个Service节点。个人认为所谓的多个Service是,服务器开启了多个线程去监听不同端口收到的来自客户端的http请求。
name:指定Service的名字。
Connector节点
主要设置Service的监听端口。
客户端与Service之间的链接,配置客户端与服务端的链接信息。Tomcat默认监听的是8080端口,商业网站对外发布,若想用户不输入端口,使用http协议的默认端口,这里就必须将其改成80。一个Service节点可以有多个Connector节点。一个端口只能对应一个进程,但是一个进程可以对应多个端口。
port:指定监听客户端请求的端口。
protocol:指定传输协议。
connectionTimeout:指定链接超时时间,毫秒。
redirectPort:指定Service正在处理http请求时收到SSL请求后重定向的端口。
Engine节点
处理监听到的来自客户端的http请求,一个Service节点仅有一个Engine节点。
name:指定Engine的名字。
defaultHost:指定主机缺省时,默认的主机,必须是某个Host结点的name值。
一个完整的http请求网址为:协议://主机:端口/虚拟目录/站点根目录/资源,如——————http://localhost:8080/aa/examples/index.html。
主机(也可以是虚拟主机或者域名),对应着ip。网络上的一台服务器只有一个ip,但是一个ip可以对应多个逻辑主机,即一个ip可以有多个域名。这多个逻辑主机实际只对应一个真正的物理主机,由此称为虚拟主机。
虚拟目录,暂且认为是真实路径的一个别名,可以没有。
Host节点
主要设置Service的虚拟主机。
配置虚拟主机,一个Engine节点可以有多个Host节点,即多个虚拟主机。
name:指定虚拟主机的名字。该名字可以随便定义,但是必须能被DNS解析到,要对应到指定的ip地址。要定义虚拟主机,先要申请域名。我们可以自己在——————————C:\Windows\System32\drivers\etc下的hosts文件内任意添加127.0.0.1本机ip对应的虚拟主机。
appBase:指定存放web应用程序的根目录,如webapps,我们的站点根目录都应该放在此目录下。站点实际是一个有着特定结构的文件夹,该文件夹的结构有着自己的特点,如必须有一个WEB—INF子文件夹,该子文件夹又必须有一个web.xml文件。
Tomcat的conf下有个web.xml文件,用于配置web应用的的信息,被服务器上的全部站点共享,这里的改变会影响到所有的站点。通常我们都是配置web应用站点根目录下的web.xml文件,其改变只对该应用起作用。该文件可以用于设置web应用的默认资源,如下:
<welcome-file-list>
//在定位到站点时,若没有指定资源,会从欢迎页面配置中从上向下找
<welcome-file>index.html</welcome-file>
<welcome-file>index.xhtml</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
unpackWARs:若为true,war格式的web应用程序运行的时候会先解压。web应用程序的根目录下,可以放程序的war文件,也可以放程序的根目录。
autoDeploy:暂不详。
Context节点
主要设置Service的虚拟目录和默认站点。
配置虚拟目录和默认站点,一个Engin节点可以有多个Context节点,即多个虚拟目录。我们在访问http://locaohost:8080的时候实际访问的是http://locaohost:8080/ROOT/index.jsp。使用http协议,根据localhost定位到主机,根据端口8080定位到主机上的Tomcat服务器Service进程,此时因为用户没有指定站点和资源,则访问conf下的server.xml配置的默认站点和资源。在server.xml中找不到该配置,是因为ROOT是通过硬编码写好的,但是可以通过配置文件修改成其他的站点。
path:指定web应用程序的虚拟路径,如/aa
docBase:指定web应用程序的实际存放路径,即虚拟目录的实际路径,具体到站点目录。在此可以是绝对路径,如D:\apache-tomcat-7.0.69\webapps\examples,可以是相对路径,如examples,即直接写站点根目录,相对appBase指定的目录。Eclipse的web项目会发布到一个临时目录:——————————————————————————————————E:/eclipse/workspace/.metadata/plugins/org.eclipse.wst.server.core\tmp0/wtpwebapps/..。
crossContext:暂且不详。
reloadable:若为true,Tomcat会自动检测项目WEB—INF目录下的lib和classes文件夹的内容,若有变化会自动重新加载项目而无需重启服务器。
debug:暂且不详。
source:暂且不详。
Logger节点
Tomcat的log信息配置。
className:指定log使用的类名,必须实现org.apache.catalina.Logger接口。
prefix:指定log文件的前缀。
suffix:指定log文件的后缀。
timestamp:若为true,则log文件名中必须加入时间戳。
Value节点
类似Logger。
directory:指定log文件的存放位置。
pattern:暂且不详。