上一篇 <<<SpringBoot常见面试问题
下一篇 >>>Tomcat启动流程说明
执行流程
1、当我们的tomcat启动的时候,默认的情况下会创建两个Connector监听端口号,分别是为Http协议Connector8080监听端口号和AJP协议Connector8009监听端口号。
2、Http协议Connector8080监听到了Http请求之后会采用Executor(线程池)处理请求,最终交给我们的Container(Engine)实现处理
3、Container(Engine)处理完请求之后在交给我们的Connector连接器封装响应的结果集给客户端。
核心配置
<!--整个tomcat服务器,一个tomcat服务器只有一个server,管理tomcat所有组件-->
<Server port="8105" shutdown="SHUTDOWN">
<!--Server服务处理的一个业务逻辑,一个Server可以存在多个Service业务逻辑-->
<Service name="Catalina">
<!--线程池定义-->
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="150" minSpareThreads="4"/>
<!--核心组件:Connector连接器,主要作用监听请求与封装请求和响应,一个Service可以有多个Connector-->
<!--Http协议的监听器-->
<Connector executor="tomcatThreadPool" port="8180" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"/>
<!--AJP协议的监听器,以前可以做内部通讯和负载均衡,由于nginx的发展,现在基本上不用了-->
<Connector port="8109" protocol="AJP/1.3" redirectPort="8443"/>
<!--核心组件:Engine容器,作用是执行业务逻辑,一个Service只有一个Engine-->
<Engine name="Catalina" defaultHost="localhost">
<!--Host虚拟主机站点,Engine可以有多个Host-->
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
<!--每个host可以存在多个Context上下文路径访问-->
<Context docBase="/Users/jiangjinrong/Downloads/aaa" reloadable="true"/>
<!--还可以定义Wrapper,相当于servlet类-->
</Host>
</Engine>
</Service>
</Server>
AJP协议与Http协议区别:
Http协议超文本传输协议
AJP协议Tomcat内部之间通讯协议,可以实现tomcat集群
推荐阅读:
<<<Tomcat启动流程说明
<<<Tomcat8的四种部署方式
<<<站在微服务架构对Tomcat进行性能调优
<<<Tomcat的AJP连接器漏洞
网友评论