tomcat: 配置文件server.xml
一、概念
tomcat属于apach基金会,是一个开源的轻量级web应用服务器。
server.xml是tomcat的最重要的配置文件。
server.xml里每一个元素对应了tomcat的一个组件,通过对server.xml元素的配置,可以实现对tomcat组件的控制。
server.xml位于$TOMCAT_HOME/conf目录下。
二、server.xml的整体结构与核心组件
<Server> 根元素,代表整个tomcat容器,有一个或多个service元素,提供接口让客户端访问service,维护service <Service> 包装Connector和Engine, 一个service包含多个Connector和一个Engine;一个Tomcat的不同端口部署多个webapp,就有多个service<Executor name="aa" namePrefix="aa-exec-" maxThreads="400" minSpareThreads="10"/> // 最大线程数
<Connector /> 连接器,代表外部客户端与哪个service接口交互(接收请求),创建request和response对象,分配给Engine处理 <Engine> 容器,处理连接器接收进来的请求并返回结果;处理service中的所有请求 <Host> 处理一个特定虚拟主机的所有请求,运行多个web应用 <Context /><!-- 现在常常使用自动部署,不推荐配置Context元素,Context小节有详细说明 --> 处理一个特定web应用的所有请求,在特定虚拟主机上运行一个web应用 </Host> </Engine> </Service></Server>
三、例子
<Server port="8005" shutdown="SHUTDOWN"> //tomcat监听的关闭端口 <Listener className="org.apache.catalina.startup.VersionLoggerListener" /> <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" /> <Listener className="org.apache.catalina.core.JasperListener" /> <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" /> <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" /> <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" /> <GlobalNamingResources> <Resource name="UserDatabase" auth="Container" type="org.apache.catalina.UserDatabase" description="User database that can be updated and saved" factory="org.apache.catalina.users.MemoryUserDatabaseFactory" pathname="conf/tomcat-users.xml" /> </GlobalNamingResources> <Service name="Catalina"> <Connector port="8080" protocol="HTTP/1.1" // 服务的端口和协议 connectionTimeout="20000" redirectPort="8443" /> // https重定向端口 <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> // 接收其他服务转发过来的端口 <Engine name="Catalina" defaultHost="localhost"> name用于日志 <Realm className="org.apache.catalina.realm.LockOutRealm"> <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/> </Realm> <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="%h %l %u %t "%r" %s %b" /> // 可以向access日志加参数 </Host> </Engine> </Service></Server>
四、自动部署
1. 配置Host元素
deployOnStartup属性为true时,在tomcat启动时自动部署
autoDeploy属性为true时,tomcat在运行时定期检查新的web应用,或老的web应用的更新
appBase属性指定web应用和war包所在的目录,通常是webapps
xmlBase属性指定web应用的配置文件所在目录
2. 检查web应用更新扫描顺序:xmlBase下的配置文件->appBase下的war包->appBase下的web应用
3. 自动部署举例:tomcat部署完成之后可以访问8080端口
五、如何确定请求由谁处理
a. 根据协议和端口号,选定service和Engine; 通过配置多个service和端口号,可以访问同一台机器上的不同应用
b. 根据域名或IP选定host
c. 根据URI选定Context
d. 例子:http://www.localhost:8080/app1/index.html
六、部署多个应用
1. 同一个Tomcat同一个端口下部署多个webapp
a. 在webapps文件夹下,放入多个war包
b. 修改server.xml文件,新增<Context>节点
2. 同一个Tomcat的不同端口下,部署多个应用
a. 在Tomcat路径下,与webapps统计目录下,新建一个文件夹webapps1
b. 修改server.xml文件,新增<Service>节点
浙公网安备 33010602011771号