首页 > 其他 > 详细

Tomcat专题(一)-----架构体系

时间:2020-02-23 22:45:40      阅读:95      评论:0      收藏:0      [点我收藏+]

目录结构

bin执行目录

sh文件liux上的,bat文件windows上的

lib

依赖的jar包

conf

catalina.policy 权限相关 Permission ,Tomcat是跑在jvm上的,所以有 些默认的权限。

server.xml: Server节点->Service ->Executor(线程池)、Connector连接器

Connector连接器 用线程池的话,connector里面的maxThreads是无效 的。

Executor (线程池)maxThreads 不设置的话一般是默认200

web.xml

DefaultServlet默认的,加载静态文件 html,js,jpg等静态文件。

JspServlet专门处理jsp。

mime-mapping 文件类型,其实就是Tomcat处理的文件类型。

日志

catalina.xxxx.log 我们的Tomcat有问题,启动不了找这个文件

三种部署方式

隐式部署:webapps目录下。将一个war文件或者整个应用程序复制到Tomcat的webapps

显式模式:

1)server.xml中的Host加入一个Context(指定路径和文件地址)-----reloadable="true"是热加载

<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true">
    <Context path="/Demo1" docBase="d:/Demo1" reloadable="true"></Context>
</Host>

2)在conf/Catalina/localhost中创建xml文件(热部署),访问路径为文件名-----创建的文件路径conf/Catalina/localhost

<?xml version="1.0" encoding="UTF-8"?>
<Context docBase="d:/Demo1" reloadable="true"></Context>

Tomcat的架构

技术分享图片

两大核心组件

Connector组件:连接器,主要负责Tomcat与客户端的通讯

Container组件:Servlet容器

技术分享图片

 

 技术分享图片

一个请求的处理流程

httpConnector就是链接器

httpProcessor是具体的处理类

Container是容器(servlet)

技术分享图片

 

 

1.监听服务器端口,读取来自 客户端的请求。

2.讲请求数据按照指定协议进 行解析。

3.根据请求地址匹配正确的容 器进行处理。

4.将响应返回客户端。 

连接器的非阻塞模式(NIO) 

通道(Channel)、缓冲区(Buffer)、选择器(Selector)

技术分享图片

 

Tomcat容器 

容器的责任链模式

1.请求被Connector组件接收,创建Request和Response对象。

2.Connector将Request和Response交给Container,先通过Engine的 pipeline组件流经内部的每个Valve。

3.请求流转到Host的pipeline组件中,并且经过内部Valve的过滤。

4.请求流转到Context的pipeline组件中,并且经过内部的Valve的过滤。

5.请求流转到Wrapper的pipeline组件中,并且经过内部的Valve的过滤。

6.Wrapper内部的WrapperValve创建FilterChain实例,调用指定的 Servlet实例处理请求。

7.返回

技术分享图片

 

Tomcat Server处理一个HTTP请求的过程

技术分享图片

1、用户点击网页内容,请求被发送到本机端口8080,被在那里监听的Coyote HTTP/1.1 Connector获得。 
2、Connector把该请求交给它所在的Service的Engine来处理,并等待Engine的回应。 
3、Engine获得请求localhost/test/index.jsp,匹配所有的虚拟主机Host。 
4、Engine匹配到名为localhost的Host(即使匹配不到也把请求交给该Host处理,因为该Host被定义为该Engine的默认主机),名为localhost的Host获得请求/test/index.jsp,匹配它所拥有的所有的Context。Host匹配到路径为/test的Context(如果匹配不到就把该请求交给路径名为“ ”的Context去处理)。 
5、path=“/test”的Context获得请求/index.jsp,在它的mapping table中寻找出对应的Servlet。Context匹配到URL PATTERN为*.jsp的Servlet,对应于JspServlet类。 
6、构造HttpServletRequest对象和HttpServletResponse对象,作为参数调用JspServlet的doGet()或doPost().执行业务逻辑、数据存储等程序。 
7、Context把执行完之后的HttpServletResponse对象返回给Host。 
8、Host把HttpServletResponse对象返回给Engine。 
9、Engine把HttpServletResponse对象返回Connector。 
10、Connector把HttpServletResponse对象返回给客户Browser。

 

Tomcat专题(一)-----架构体系

原文:https://www.cnblogs.com/alimayun/p/12353250.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!