Tomcat是如何运行的,Java高级工程师面试答案大全

本文详细介绍了Tomcat的整体架构,包括连接器和容器两大核心部分。连接器负责处理Socket连接,读取并解析Http/AJP协议的字节流,转化为Servlet的Request和Response对象。容器则管理Servlet,处理请求并返回响应。通过EndPoint、Processor和Adapter三类实现网络通信、应用层协议解析及对象转化。Tomcat的容器采用组合设计,用于装载和管理Servlet。掌握这些知识将有助于在面试中脱颖而出。
摘要由CSDN通过智能技术生成

整体架构

=======================================================================

我们想要了解一个框架,首先要了解它是干什么的,Tomcat我们都知道,是用于处理连接过来的Socket请求的。那么Tomcat就会有两个

  • 对外处理连接,将收到的字节流转化为自己想要的Request和Response对象

  • 对内处理Servlet,将对应的Request请求分发到相应的Servlet中

那么我们整体的骨架就出来了,Tomcat其实就分为两大部分,一部分是连接器(Connnector)处理对外连接和容器(Container)管理对内的Servelet。大体的关系图如下

在这里插入图片描述

最外层的大框就是代表一个Tomcat服务,一个Tomcat服务可以对应多个Service。每个Service都有连接器和容器。这些对应的关系我们也可以打开在Tomcat目录配置文件中server.xml中看出来。


 <Server port="8006" shutdown="SHUTDOWN">

  <Service name="Catalina">



    <Connector port="8080" protocol="HTTP/1.1"

               connectionTimeout="20000"

               redirectPort="8443" />

    <Connector port="8010" protocol="AJP/1.3" redirectPort="8443" />



    <Engine name="Catalina" defaultHost="localhost">



      <Realm className="org.apache.catalina.realm.LockOutRealm">

       

        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"

               resourceName="UserDatabase"/>

      </Realm>



      <Host name="localhost"  appBase="webapps"

       

      </Host>

    </Engine>

  </Service>

</Server> 

这里我将其中配置文件中删除了一些内容精简了一下,这里我们可以看到连接器其实就是Connector,一个Service中可以有多个连接器,容器其实对应的就是Engine。

Tomcat的整体架构简单来说就是这样的对应关系。接下来我们简单的介绍连接器的整体架构和容器的整体架构。

连接器

======================================================================

我们可以看到上图中连接器传给容器的是ServletRequest对象,而容器传给连接器的是ServletResponse对象,这些在网络传输过程中是肯定不行的,因为网络传输中传送的字节流。所以连接器的功能需求我们大概能总结出来以下几点。

  • Socket连接

  • 读取请求网络中的字节流

  • 根据相应的协议(Http/AJP)解析字节流,生成统一的Tomcat Requestt对象

  • 将Tomcat Reques传给容器

  • 容器返回Tomcat Response对象

  • 将Tomcat Response对象转换为字节流

  • 将字节流返回给客户端

其实上面的细分都能总结为以下的三点

  • 网络通信

  • 应用层协议的解析

  • Tomcat的Request/Response与ServletRequest/ServletResponse对象的转化

而在Tomcat中它也用了三个类来实现上面的三个功能,分别对应如下

  • EndPoint

  • Processor

  • Adapter

用图表示他们的关系的话就是这样

在这里插入图片描述

容器

=====================================================================

容器,顾名思义就是装东西的器具,那么这个Tomcat容器是装什么的呢?其实主要的就是装了Servlet的。那么容器是如何设计的呢?Tomcat的容器设计其实是用了组合设计,其实从Server.xml中我们也能看到其关系了。

最后

面试是跳槽涨薪最直接有效的方式,马上金九银十来了,各位做好面试造飞机,工作拧螺丝的准备了吗?

掌握了这些知识点,面试时在候选人中又可以夺目不少,暴击9999点。机会都是留给有准备的人,只有充足的准备,才可能让自己可以在候选人中脱颖而出。

如果你需要这份完整版的面试笔记,只需你多多支持我这篇文章。

——对文章进行点赞+评论,关注我,然后再点击这里免费领取

颖而出。

如果你需要这份完整版的面试笔记,只需你多多支持我这篇文章。

——对文章进行点赞+评论,关注我,然后再点击这里免费领取

[外链图片转存中…(img-ONLrVDy5-1628420783086)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值