文章目录
一、server.xml实例
这是我Tomcat7中的server.xml文件,只不过我把注释都删除了。
<Server port="8005" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.startup.VersionLoggerListener" />
<Listener SSLEngine="on" className="org.apache.catalina.core.AprLifecycleListener" />
<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 auth="Container"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
name="UserDatabase" pathname="conf/tomcat-users.xml"
type="org.apache.catalina.UserDatabase" />
</GlobalNamingResources>
<Service name="Catalina">
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
<Engine defaultHost="localhost" name="Catalina">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase" />
</Realm>
<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true">
<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs" pattern="%h %l %u %t "%r" %s %b"
prefix="localhost_access_log." suffix=".txt" />
<Context docBase="servlet-demo05-ServletContext" path="/" reloadable="true"
source="org.eclipse.jst.jee.server:servlet-demo05-ServletContext" />
</Host>
</Engine>
</Service>
</Server>
二、核心组件解释
请看注释
<!-- Server元素在最顶层,代表整个Tomcat容器。
作用:提供一个接口让客户端能够访问到这个Service集合,同时维护它所包含的所有的Service的声明周期,包括如何初始化、如何结束服务、如何找到客户端要访问的Service
属性:shutdown属性表示关闭Server的指令;
port属性表示Server接受shutdown指令的端口号,设置为-1可以禁用该端口;-->
<Server port="8005" shutdown="SHUTDOWN">
<!-- Service元素作用是:将Connector和Engine组装在一起,对外提供服务
属性:name属性表示这个服务的名字,这个服务命名为Catalina;-->
<Service name="Catalina">
<!-- Connector的作用是:从客户端接收连接请求。通过配置Connector,可以控制请求Service的协议及端口号。
属性:connectionTimeout属性表示连接的超时时间,20000秒;
prot表示Tomcat监听HTTP请求,使用的是8080端口;
protocol表示协议,协议为HTTP/1.1;
redirectPort表示当强制要求https而请求是http时,重定向至端口号为8443的Connector-->
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" />
<!-- 这个配置是为了:Tomcat与其他HTTP服务器集成时,就需要用到这个连接器 -->
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
<!-- Engine作用是:请求处理。
属性:name属性用于日志和错误信息,在整个Server中应该唯一。
defaultHost属性指定了默认的host名称,当发往本机的请求指定的host名称不存在时,一律使用defaultHost指定的host进行处理;因此,defaultHost的值,必须与Engine中的一个Host组件的name属性值匹配。 -->
<Engine defaultHost="localhost" name="Catalina">
<!-- Host虚拟主机的作用,是运行多个Web应用(一个Context代表一个Web应用),并负责安装、展开、启动和结束每个Web应用。
属性:appBase属性指定了该去什么文件夹下找这个web应用
name属性指定虚拟主机的主机名,一个Engine中有且仅有一个Host组件的name属性与Engine组件的defaultHost属性相匹配;
unpackWARs指定了是否将代表Web应用的WAR文件解压;如果为true,通过解压后的文件结构运行该Web应用,如果为false,直接使用WAR文件运行Web应用。 -->
<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true">
<!-- Context元素代表在特定虚拟主机上运行的一个Web应用。
属性:docBase指定了该Web应用使用的WAR包路径,或应用目录。
path指定了访问该Web应用的上下文路径,当请求到来时,Tomcat根据Web应用的 path属性与URI的匹配程度来选择Web应用处理相应请求。
reloadable属性指示tomcat是否在运行时监控在WEB-INF/classes和WEB-INF/lib目录下class文件的改动。如果值为true,那么当class文件改动时,会触发Web应用的重新加载。
source属性暂时我还没看懂。值中间冒号后面是我的项目名,如果删除了这句我Eclipse中启动项目会失败 -->
<Context docBase="servlet-demo05-ServletContext" path="/" reloadable="true"
source="org.eclipse.jst.jee.server:servlet-demo05-ServletContext" />
</Host>
</Engine>
</Service>
</Server>