微信公众号文章列表:关注公众号(coding_song)阅读更清晰,附件为微信二维码
本文微信公众号原文链接:https://mp.weixin.qq.com/s/socZ7J3xSH3HXeoEjIQxtg
Tomcat server.xml配置
-
<Servershutdown="SHUTDOWN"port="8005">
-
<ListenerclassName="org.apache.catalina.startup.VersionLoggerListener"/>
-
<ListenerclassName="org.apache.catalina.core.AprLifecycleListener"SSLEngine="on"/>
-
<ListenerclassName="org.apache.catalina.core.JreMemoryLeakPreventionListener"/>
-
<ListenerclassName="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/>
-
<ListenerclassName="org.apache.catalina.core.ThreadLocalLeakPreventionListener"/>
-
<GlobalNamingResources>
-
<Resourcepathname="conf/tomcat-users.xml"factory="org.apache.catalina.users.MemoryUserDatabaseFactory"description="User database that can be updated and saved"type="org.apache.catalina.UserDatabase"auth="Container"name="UserDatabase"/>
-
</GlobalNamingResources>
-
<Servicename="Catalina">
-
<Connectorport="8080"redirectPort="8443"connectionTimeout="20000"protocol="HTTP/1.1"/>
-
<Connectorport="8009"redirectPort="8443"protocol="AJP/1.3"/>
-
<!-- Container配置 -->
-
<Enginename="Catalina"defaultHost="localhost">
-
<RealmclassName="org.apache.catalina.realm.LockOutRealm">
-
<RealmclassName="org.apache.catalina.realm.UserDatabaseRealm"resourceName="UserDatabase"/>
-
</Realm>
-
<Hostname="localhost"autoDeploy="true"unpackWARs="true"appBase="webapps">
-
<ValveclassName="org.apache.catalina.valves.AccessLogValve"pattern="%h %l %u %t "%r" %s %b"suffix=".txt"prefix="localhost_access_log"directory="logs"/>
-
</Host>
-
</Engine>
-
</Service>
-
</Server>
Tomcat顶层结构
-
Server:Tomcat中最顶层的容器叫Server,代表整个服务器
-
Service:Server中至少包含一个Service,用于提供服务,service主要包含2个部分Connector和Container
-
Connector:一个Service包含多个Connector,用于处理Socket连接,并将Socket连接封装成Request和Response
-
Container:一个Service中只有一个Connector,用于封装和管理Servlet
Connector结构
-
ProtocolHandler:Connector中具体是用ProtocolHandler来处理请求,定义了Endpoint和Processor两个内部类,和一个Adapter接口
-
Endpoint:用于监听并处理接收到Socket请求
-
Acceptor:监听Socket请求
-
Handler:处理Socket请求
-
Processor:将Accetor接收到的Socket请求封装成Request
-
Adapter:将封装好的Request交给Container进行处理
Container结构
-
Engine:tomcat引擎,用来管理多个Host(站点),一个Service最多只能有一个Engine
-
Host:一个Engine中可以有多个Host,Host代表一个站点或虚拟机
-
Context:一个Host中可以有多个Context,代表一个应用程序
-
Wrapper:一个Context可以有多个Wrapper,每个Wraaper封装一个Servlet