首先列个Tomcat server.xml中元素结构
<Server>
<serivice>
<connector />
<connector />
<Engine>
<Host>
<context />
</Host>
</Engine>
</service>
</Server>
总体关系如下
- 一个tomcat有一个server元素,这是它的根元素,server元素可以有多个service
- 一个service元素有子元素:connector,Engine,一个service可以有多个connetor,一个端口就一个connector,但只能有一个Engine
- Engine有子元素:Host,一个Engine可以有多个Host
- Host元素有子元素context
不同元素的属性以及其功能如下:
- Service中的connector中可以接收特定端口的请求,当tomcat启动时候就可以监听不同端口,比如设置
"<connector path="8080" protocol="HTTP/1.1 connectionTimeout="20000" redirectPort="8443" />
但url访问8080端口,那个启用这个connector对应的serivice。protocol设置了请求是http,连接超时时间设置为20000ms, 但一个web应用要求https访问,但访求却是http时候,把端口映射到8443.
Connector的作用是外部客户端请求到servic的接口,同时是反馈响应的接口
2.Engine 当Service确定了之后,Engine负责出来该Service的Connector传递下来的所有请求
<Engine name="Messi" defaultHost="localhost">
name属性用于日志和错误信息,在整个Server中应该唯一。defaultHost属性指定默认的host的name,当发往本机的请求中没有与之对应的host的name,一律使用defaultHost指定的host来处理,这也就规定了,下面的host元素必须有一个的name叫localhost
3.Host处理一个特定虚拟机的所有请求
<Host name="localhost" appBase="webapps" unPackWARs="true" autoDeplog="true">
appBase的作用指定web应用所在的目录,这是一个相对路径,unPackWARs是☞是否把web应用先解压再执行
如果deployOnStartup和autoDeploy设置为true,则tomcat启动自动部署:当检测到新的Web应用或Web应用的更新时,会触发应用的部署(或重新部署)。二者的主要区别在于,deployOnStartup为true时,Tomcat在启动时检查Web应用,且检测到的所有Web应用视作新应用;autoDeploy为true时,Tomcat在运行时定期检查新的Web应用或Web应用的更新。除此之外,二者的处理相似
4. context 指定处理特定web应用
<context path="/app1" />
path指定了访问该Web应用的路径,当请求时候,tomcat会更加url与path匹配程度,来调用对应的web应用,比如url是/app1/index.html 那么就调用app1这个web应用。
举一个例子来整合一下
比如一个url为http://localhost:8080/app1/index.html为例,首先通过8080个协议http确认service,然后通过localhost确认host,然后通过/app1确认具体那个web应用
那么如何配置多个服务呢??
可以通过不同端口号来访问同一个机器不同web应用
那么要修改什么属性
修改端口号
修改service的name和engine的name
以及host的appBase,不同文件的web应用
大概就这些了,谢谢!!!!