tomcat如何处理请求 源码分析(二)(Container部分)

上下文

tomcat源码分析共2个阶段
1.tomcat如何接收处理请求源码分析(一)(Connector部分)
2.tomcat如何接收处理请求源码分析(二)(Container部分)本篇

目标:

本文主要分析tomcatContainer部分,已经封装好的HttpRequest,经过一层层Valve一层层filter最终是如何到达controller。下图中的2号框和3号框即使本所涉及的范围。
在这里插入图片描述
在这里插入图片描述

正文

1container结构分析

valve(阀门)可以简单理解为过滤器(filter),阀门和过滤器本来就相似,我们开发过web的同事应该都有使用filter的经历,比如session校验,非法请求拦截等一些常用的方案,都可以通过filter解决。而我们tomcat层面的valve也类似于filter,会对请求进行拦截。那么它和filter的区别是什么?filter拦截的目标是 tomcatwebapps下的一个应用 ,而valve则是属于容器层面的拦截。什么叫容器层面的拦截。我们前面分析过,一个请求最终进入到controller,首先是经历了connector对连接处理,然后进入container容器,而容器内部先是进入最外层的Engine,,然后进入第二层Host,然后是Context,最后是Wrapper,这是一种嵌套的顺序,类似下图。
在这里插入图片描述

2对enginehostcontextwrapper的理解

容器是一个比较大的概念,以上四个都属于容器,大小不同,容器是针对tomcat内部的组件的抽象。
在这里插入图片描述
engine理解为引擎、host理解为虚拟主机、context理解为webapps下的一个文件夹、wrapper理解为一个controller。这些容器都可以在tomcat的配置文件server.xml中配置,如下文所示。

<?xml version='1.0' encoding='utf-8'?>
<Server port="8005" shutdown="SHUTDOWNING">
  <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
  <Service name="Catalina">
    <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
        maxThreads="150" minSpareThreads="4"/>      
    <Connector URIEncoding="UTF-8" port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
作为一个AI机器人,我并没有能力进行源码分析。但是我可以提供一些关于Tomcat8.5的相关信息。 Tomcat8.5是Apache Tomcat的一个版本,是一个开源的Web容器,使用Java编写,可用于部署Java Web应用程序。Tomcat8.5增加了对Java Servlet 3.1、JavaServer Pages 2.3、Java Unified Expression Language 3.0以及WebSocket 1.1的支持。Tomcat8.5还增强了对SSL/TLS的支持,包括支持ALPN协议和OCSP Stapling。Tomcat8.5还提供了一些新的特性,如异步I/O和NIO2。 在Tomcat8.5源码中,主要涉及到的模块有:Catalina、Coyote、Jasper、WebSocket和Tomcat Native。Catalina模块是Tomcat的核心模块,负责处理HTTP请求和响应。Coyote模块负责处理HTTP请求的接收和响应。Jasper模块负责处理JSP页面的编译和执行。WebSocket模块提供了基于WebSocket协议的通信。Tomcat Native模块提供了对APR(Apache Portable Runtime)库的支持,可以提高Tomcat的性能和可靠性。 在Tomcat8.5源码中,还有一些其他的模块,如:Cluster、Manager、Realm、Valve等。Cluster模块提供了集群支持,可以让多个Tomcat实例共享会话信息。Manager模块提供了Web应用程序管理的功能。Realm模块提供了认证和授权的支持。Valve模块提供了一些过滤器和拦截器,可以对HTTP请求和响应进行处理。 总体来说,Tomcat8.5源码是一个庞大而复杂的项目,需要对JavaWeb开发有一定的了解才能进行源码分析。如果有兴趣了解Tomcat8.5的源码,可以先从官方文档和源码注释入手,逐步深入了解各个模块的实现原理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值