学习tomcat,就一定要了解这些配置文件,也能为以后学习框架打好良好的基础
在conf目录中,有几个常用的配置文件
1.sever.xml
server.xml中的每一个标签都对应了Tomcat的一个组件,学习xml文件中标签的配置,可以实现对tomcat各个组件的控制。学习server.xml文件的配置,对于了解和使用tomcat至关重要。
1.server.xml文档的元素和分类的整体结构
<Server>
<Service>
<Connector></Connector>
<Engine>
<host>
<Context/>这个标签很重要,现在常常使用自动部署,不推荐在server.xml中配置这个
这个标签!自动部署后面会将。
</host>
</Engine>
</Service>
</Server>
2.元素分类
顶层元素<Server>是整个配置文件的根元素。
连接器<Connector>简单点说就是接受客户的发起的请求接口的连接器。用来接收请求
处理请求的容器<engine><host><context>
容器的功能是处理connector接受客户的发起的请求,然后进行处理和响应。
在server.xml配置文件中,只能有一个Engine标签。一个Engine标签处理一个可以处理
service中的所有请求,
一个host标签可以处理一个特定的虚拟主机的所有请求。
一个context标签可以处理一个web应用(web项目)发起的所有请求。
上面的这些标签都是最重要的核心标签,也可以说是元素或者组件。
3.核心组件
1.service代表整个Tomcat容器,主要任务是,提供一个接口让客户的能客户的访问,,
比如生命周期,如何初始化,如何结束服务,如果找到客户端要访问的service。
:简单点说就是关闭时调用8005端口
Port:端口
shutdown:关闭
2.Server :可以有多个service,不同的的service监听不同的端口
处理所有由Tomcat服务器发起的web请求
name:属性定义了service的名字
3.Connector
主要任务是,接收客户的发起的请求,在客户的发起请求时创建request和response两个对象,然后线程让Engine来处理发起的请求,并把request和response对象传给Engine。
通过配置Connector,可以控制请求的端口号和协议。
<Connector port="8080" protocol="http/1.1" connectionTimeout="2000"redirectPort="8443"</>
客户端是通过8080端口使用http协议访问tomcat的。
port:访问tomcat时的端口
protocol:协议
connectionTimeout:和客户的建立连接的最大时间,超过
redirectPort:翻译过来就是转发端口,如果请求是https是,
那么转发到端口8843的connector,简单点说就是转发到请求端口为8843的连接器。
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
通过8009端口来使用ajp协议来访问Tomcat。在把Tomcat与其他HTTP服务器集成使用来,就需要用到这个连接器。
之所以用和其他服务器集成,因为tomcat作为Servlet/jsp的容器,对静态资源处理速度比较慢,
不如Apache和LLS等HTTP服务器;因此常常将tomcat与Apache服务器集成,Tomcat用作容器,
Apache处理静态资源,AJP这个连接器用于tomcat和Apache的连接。
简单点解释就是和其他集成服务器和tomcat建立连接的连接器,好像可以删掉。
4.Engine
<Engine name="Catalina" defaultHost="localhost"></Engine>
从Connector中接收请求并处理的标签.
name:属性是唯一的,是管理所有虚拟主机的,只能有一个。
defaultHost:可以解释为默认ip地址映射域名,这个域名映射的ip就是本机ip 127.0.0.1。这个域名必须要和host(主机)上的name属性一致,且必须是唯一
5.<Host>
<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true"></Host>
host简单点说就是一个虚拟主机,作用是运行多个web应用,也就是项目。
在这个标签中,有几个属性
appBase:简单点说就一个当前虚拟主机的存放web应用的目录,如果开启了自动部署,那么服务器首先会检查在该目录下是否有这个web应用,如果没有,那么会添加当前的web文件夹,会将webContent下的所有内容都添加在这里,有就不添加了。
autoDeploy:简单点说就是自动部署,
name:指定是这个虚拟主机的域名,可以有多个host(虚拟主机),每个虚拟主机的域名都是唯一,
但是必须有一个虚拟主机的域名对应Engine的defaultHost属性总的域名。
autoDeploy是和appBase有关的。
如果开启了自动部署,那么在服务器运行web时,当检测到新的web应用或者是web应用更新了,
那么会将当前的web应用部署到中的webContent中的文件先部署到webapps目录中,然后生成在当前虚拟主机域名下生成一个当前web应用.xml的配置文件。
比如,我有一个新news项目,如果开启了自动部署,在tomcat中运行这目录时,会在webapps目录下生成一个news文件,然后在当前虚拟主机域名目录下生成一个xml配置文件。
比如我当前的虚拟主机name就是localhost,在conf/catalina目录下的localhost目录下生成一个当前项目.xml文件,
然后在webapps目录下部署当前的项目。比如这个项目就是news,那么会生成一个news的文件夹。
catalina文件就是当前Engline中的name属性对应的属性值文件。
6.<Context>
<Context docBase="Ajax与jQuery" path="/Ajax与jQuery" reloadable="true" source="org.eclipse.jst.jee.server:Ajax与jQuery"/><Context docBase="golf" path="/golf" reloadable="true" source="org.eclipse.jst.jee.server:golf"/><Context docBase="news_chapter10_01" path="/news" reloadable="true" source="org.eclipse.jst.jee.server:news_chapter10_01"/></Host>
Context标签指的是在一个特定虚拟主机上运行的web应用,context是host标签的子容器,每个host都可以有任意个context标签,
换句话来说就是一个特定虚拟主机上可以运行多个web应用,那么也就会有多个对应的context标签。
appBase:指的是一个web应用的所在的目录。可以是绝对路径,也可以是基于webapps下的相对路径。
path:也是路径,是web应用的目录,必须指定为当前项目的根目录,不能随便指定。在网站访问时,就是根据这个路径匹配项目。
reloadable:指的是tomcat是否在运行时监控WEB-INI/CLASS和lib/class文件的改动,如果为true,那么当class未见改动时,
会web应用会重新加载。设置为true便于调试,但是在生产环境中设置为true会给服务器带来性能压力。