Tomcat知识图谱
2023-12-26 18:57:45 14 举报
AI智能生成
Tomcat知识图谱
作者其他创作
大纲/内容
部署方式
利用tomcat自动部署
把web应用拷贝到webapps目录。Tomcat在启动时会加载目录下的应用,并将编译后的结果放入work目录下。
使用Manager App控制台自动部署
在tomcat主页点击“Manager App” 进入应用管理控制台,可以指定一个web应用的路径或war文件。
修改config/server.xml文件部署
修改conf/server.xml文件,增加Context节点可以部署应用。
增加自定义的web文件部署
在conf/Catalina/localhost/ 路径下增加 xyz.xml文件,内容是Context节点,可以部署应用。
工作模式
按照作为servlet容器分类
独立的servlet容器
servlet容器是web服务器的一部分
进程内的servlet容器
servlet容器是作为web服务器的插件和java容器的实现,
web服务器插件在内部地址空间打开一个jvm使得java容器在内部得以运行。
反应速度快但伸缩性不足;
web服务器插件在内部地址空间打开一个jvm使得java容器在内部得以运行。
反应速度快但伸缩性不足;
进程外的servlet容器
servlet容器运行于web服务器之外的地址空间,并作为web服务器的插件和java容器实现的结合。
反应时间不如进程内但伸缩性和稳定性比进程内优;
反应时间不如进程内但伸缩性和稳定性比进程内优;
请求模式分类
作为应用程序服务器
请求来自于前端的web服务器,这可能是Apache, IIS, Nginx等
作为独立服务器
请求来自于web浏览器
Container处理请求
使用Pipeline-Valve管道来处理(职责链模)
使用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方法,这样请求就得到了处理!
并调用其doFilter方法来处理请求,这个FilterChain包含着我们配置的与请求相匹配的Filter和Servlet,
其doFilter方法会依次调用所有的Filter的doFilter方法和Servlet的service方法,这样请求就得到了处理!
当所有的Pipeline-Valve都执行完之后,并且处理完了具体的请求,
这个时候就可以将返回的结果交给Connector了,
Connector再通过Socket的方式将结果返回给客户端。
这个时候就可以将返回的结果交给Connector了,
Connector再通过Socket的方式将结果返回给客户端。
Connector运行模式
同步阻塞(BIO)
linux环境tomcat7默认使用方式
并发量高时,线程数较多,浪费资源
配制项:protocol=”HTTP/1.1”
一个线程处理一个请求
同步非阻塞(NIO)
利用Java的异步IO处理,可以通过少量的线程处理大量的请求,
可以复用同一个线程处理多个connection(多路复用)。
可以复用同一个线程处理多个connection(多路复用)。
linux环境tomcat8默认使用方式
配制项:protocol=”org.apache.coyote.http11.Http11NioProtocol”
异步非阻塞(APR)
(Apache Portable Runtime/Apache可移植运行时)
(Apache Portable Runtime/Apache可移植运行时)
及AIO又叫NIO2
从操作系统层面解决io阻塞问题;与NIO的区别主要是操作系统的底层区别.
可以做个比喻:比作快递,
NIO就是网购后要自己到官网查下快递是否已经到了(可能是多次),然后自己去取快递;
AIO就是快递员送货上门了(不用关注快递进度)。
可以做个比喻:比作快递,
NIO就是网购后要自己到官网查下快递是否已经到了(可能是多次),然后自己去取快递;
AIO就是快递员送货上门了(不用关注快递进度)。
配制项:protocol=”org.apache.coyote.http11.Http11AprProtocol”
缺点
安装困难
配置apr模式之后还需要安装 apr 、 apr-utils 、tomcat-native包
运行高并发应用的首选模式
概述
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协议
架构结构
server
service
Connector
ProtocolHandler
Endpoint
AbstractEndpoint
Acceptor内部类
监听请求
AsyncTimeout内部类
检查异步request的超时
Handler接口
用于处理收到的socket,在内部调用processor进行处理
Processor
将Endpoint接收到的Socket封装成Request
Adapter
将Request交给Container进行具体的处理。
Catalina
(Engine)
(Engine)
Host
(webapp)
(webapp)
Context
(WEB-INF)
(WEB-INF)
Wrapper
servelt
servelt
每个Wrapper封装一个servelt请求
文件结构
bin
各种操作脚本
config
context.xml
server.xml
tomcat-user.xml
lib
tomcat需要的jar包
logs
webapp
work
Tomcat把有jsp生成Servlet放在目录下
0 条评论
下一页