Tomcat server.xml详解
标签分级:
<server> #表示一个运行于JVM中的tomcat实例。
<service> #服务。将connector关联至engine,因此一个service内部可以有多个connector,但只能有一个引擎engine。
<connector /> #接收用户请求配置监听端口的
<engine> #核心容器组件,catalina引擎,负责通过connector接收用户请求,并处理请求,将请求转至对应的虚拟主机host。
<host> #虚拟主机,
<context></context> #配置context的主要目的指定对应对的webapp的根目录。其还能为webapp指定额外的属性,如部署方式等。
</host>
<host>
<context></context>
</host>
</engine>
</service>
</server>
我的server.xml
<?xml version='1.0' encoding='utf-8'?>
<Server port="8005" shutdown="SHUTDOWN"> <!--整个容器,8005端口用于监听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" />
<!-- Listener即监听器,负责监听特定的事件,当特定事件触发时,Listener会捕捉到该事件,
并做出相应处理。Listener通常用在Tomcat的启动和关闭过程。-->
<GlobalNamingResources>
<!--用于配置JNDI-->
<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="Catalina1">
<!--一个完整的服务-->
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<!--Tomcat接收请求的入口,每个Connector有自己专属的监听端口
redirectPort:处理http请求时,收到一个SSL传输请求,该SSL传输请求将转移到此端口处理
-->
<Engine name="Catalina1" defaultHost="localhost">
<!--Engine负责处理Service内的所有请求。它接收来自Connector的请求,并决定传给哪个Host来处理,
Host处理完请求后,将结果返回给Engine,Engine再将结果返回给Connector
defaultHost 指定默认host名字Engine接收来自Connector的请求,然后将请求传递给defaultHost,
defaultHost 负责处理请求
-->
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
<Host name="localhost" appBase=""
unpackWARs="true" autoDeploy="true">
<!--Host负责管理一个或多个Web项目若有多个honst将appBase写成同样的路径,
启动时会加载同样的项目,unpackWARs="true" 是否自动解压war包
-->
<Context path="" docBase="webapps/RMS" reloadable="false" />
<!--配置项目名称-->
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost\_access\_log." suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
</Engine>
</Service>
<!--配置不同域名,不同端口号,部署不同项目,若域名不想加端口,将端口配置成80
ip:80 ====>ip
-->
<Service name="Catalina">
<Connector port="8089" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8445"
URIEncoding="UTF-8" />
<!-- 此端口为8089,与其他service容器不能有冲突
当域名解析到这个服务器后,ip:8089 会进到此service容器
-->
<Engine name="Catalina" defaultHost="localhost">
<!--配置默认host-->
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
<!--配置一个域名一个项目-->
<Host name="www.nsk666.com" appBase="" unpackWARs="true" autoDeploy="true">
<!-- 配置:项目名,项目路径,注意多hostappBase请不要填写,然后会重复加载项目 -->
<Context path="" docBase="" reloadable="false" />
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost\_access\_log." suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
<!--配置第二个域名第二个项目-->
<Host name="tnt.nsk666.com" appBase="" unpackWARs="true" autoDeploy="true">
<!-- 配置:项目名,项目路径 -->
<Context path="" docBase="webapps/HRSystem" reloadable="false" />
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost\_access\_log." suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
<!--访问RMS项目 www.nsk666.com:8089
访问HRSystem项目 tnt.nsk666.com:8089
不想有端口号,可以配置成80端口。
-->
</Engine>
</Service>
</Server>