tomcat
2021-11-20 16:22:10 38 举报
AI智能生成
Tomcat是一个开源的Web应用服务器,它是Apache软件基金会的一个项目。Tomcat提供了一个运行JSP和Servlets的容器,它实现了Java Servlet和JavaServer Pages(JSP)技术规范。Tomcat被广泛用于构建和部署Java Web应用程序,如电子商务网站、在线教育平台等。 Tomcat具有轻量级、高性能、易于配置和管理等优点。它支持多种操作系统,包括Windows、Linux和Mac OS X。此外,Tomcat还提供了丰富的扩展功能,可以通过插件来增强其功能。
作者其他创作
大纲/内容
各种操作脚本
bin
context.xml
server.xml
tomcat-user.xml
config
tomcat需要的jar包
lib
logs
webapp
Tomcat把有jsp生成Servlet放在目录下
work
文件结构
监听请求
Acceptor内部类
检查异步request的超时
AsyncTimeout内部类
Handler接口
AbstractEndpoint
Endpoint
将Endpoint接收到的Socket封装成Request
Processor
将Request交给Container进行具体的处理。
Adapter
ProtocolHandler
Connector
每个Wrapper封装一个servelt请求
Wrapperservelt
Context(WEB-INF)
Host(webapp)
Catalina(Engine)
service
server
四张图带你了解Tomcat系统架构
架构结构
Server标签设置的端口号为8005,shutdown=”SHUTDOWN” ,表示在8005端口监听“SHUTDOWN”命令,如果接收到了就会关闭Tomcat。
Tomcat中只有一个Server,一个Server可以有多个Service,一个Service可以有多个Connector和一个Container;
Server掌管着整个Tomcat的生死大权;
Service 是对外提供服务的;
Connector用于接受请求并将请求封装成Request和Response来具体处理;
Container用于封装和管理Servlet,以及具体处理request请求;
Connector最底层使用的是Socket来进行连接的,Request和Response是按照HTTP协议来封装的,所以Connector同时需要实现TCP/IP协议和HTTP协议
概述
linux环境tomcat7默认使用方式
并发量高时,线程数较多,浪费资源
配制项:protocol=”HTTP/1.1”
一个线程处理一个请求
同步阻塞(BIO)
利用Java的异步IO处理,可以通过少量的线程处理大量的请求,可以复用同一个线程处理多个connection(多路复用)。
linux环境tomcat8默认使用方式
配制项:protocol=”org.apache.coyote.http11.Http11NioProtocol”
同步非阻塞(NIO)
及AIO又叫NIO2
从操作系统层面解决io阻塞问题;与NIO的区别主要是操作系统的底层区别.可以做个比喻:比作快递,NIO就是网购后要自己到官网查下快递是否已经到了(可能是多次),然后自己去取快递;AIO就是快递员送货上门了(不用关注快递进度)。
配制项:protocol=”org.apache.coyote.http11.Http11AprProtocol”
安装困难
配置apr模式之后还需要安装 apr 、 apr-utils 、tomcat-native包
缺点
运行高并发应用的首选模式
异步非阻塞(APR)(Apache Portable Runtime/Apache可移植运行时)
Connector运行模式
使用Pipeline-Valve管道来处理(职责链模)
每个Pipeline都有特定的Valve,而且是在管道的最后一个执行,这个Valve叫做BaseValve,BaseValve是不可删除的;
在上层容器的管道的BaseValve中会调用下层容器的管道。
与普通职责链的区别
StanderEngineValve
StanderHostValve
StanderContextValve
StanderWrapperValve
四个子容器
connector调用EnginePipeline
依次会执行EngineValve1、EngineValve2等等,最后会执行StandardEngineValve,在StandardEngineValve中会调用Host管道
依次执行Host的HostValve1、HostValve2等,最后在执行StandardHostValve
再依次调用Context的管道和Wrapper的管道,最后执行到StandardWrapperValve。
当执行到StandardWrapperValve的时候,会在StandardWrapperValve中创建FilterChain,并调用其doFilter方法来处理请求,这个FilterChain包含着我们配置的与请求相匹配的Filter和Servlet,其doFilter方法会依次调用所有的Filter的doFilter方法和Servlet的service方法,这样请求就得到了处理!
当所有的Pipeline-Valve都执行完之后,并且处理完了具体的请求,这个时候就可以将返回的结果交给Connector了,Connector再通过Socket的方式将结果返回给客户端。
处理流程
Container处理请求
servlet容器是web服务器的一部分
独立的servlet容器
servlet容器是作为web服务器的插件和java容器的实现,web服务器插件在内部地址空间打开一个jvm使得java容器在内部得以运行。反应速度快但伸缩性不足;
进程内的servlet容器
servlet容器运行于web服务器之外的地址空间,并作为web服务器的插件和java容器实现的结合。反应时间不如进程内但伸缩性和稳定性比进程内优;
进程外的servlet容器
按照作为servlet容器分类
作为应用程序服务器
请求来自于web浏览器
作为独立服务器
请求模式分类
工作模式
把web应用拷贝到webapps目录。Tomcat在启动时会加载目录下的应用,并将编译后的结果放入work目录下。
利用tomcat自动部署
在tomcat主页点击“Manager App” 进入应用管理控制台,可以指定一个web应用的路径或war文件。
使用Manager App控制台自动部署
修改conf/server.xml文件,增加Context节点可以部署应用。
修改config/server.xml文件部署
在conf/Catalina/localhost/ 路径下增加 xyz.xml文件,内容是Context节点,可以部署应用。
增加自定义的web文件部署
部署方式
Tomcat面试题(2020最新版)
tomcat
0 条评论
回复 删除
下一页