tomcat为什么一启动就可以一直运行?
看了一点tomcat架构,说是server掌控着tomcat的生命周期,
那么server为什么一启动就可以一直运行?
是因为底层有一个死循环吗?
Tomcat是个应用服务器,最简单的模型就是启动的时候,开启端口,一直监听,等待客户端连接(请求)。就跟socket server端启动后,
等待client端连接道理是一样的。
可以理解为有个循环一直在工作。 一般是listen 端口,等待IO。
tomcat启动后会创建一个东西叫做endpoint(抽象名称),这个endpoint里面有一个内部类叫作acceptor,accptor是runnable接口的一个实现。endpoint会调用accptor的run方法,而这个run方法里面有个while(running){........}这个running就是tomcat的启停标识,这个while(running)里面一直监听着socketServer,只要有新的socket产生就会放到线程池里执行,执行这个socket的线程叫作SocketProcessor,在这个SocketProcessor放在线程池中所以他也是实现runnable接口的线程类,它的作用是解析http报文生成Request然后发送到Tomcat的容器中,容器分4层,从上到下为Engine->Host->Context->Wrapper ,Wrapper中会构建过滤器链,过滤器链会通过InternalFilter方法调用完,过滤器链调用完所有的过滤器后就会执行tomcat的servlet.service方法,该方法又会通过this.doget去执行servlet的doget方法。以上就是为什么tomcat能一直运行的原因以及请求的大致过程。本人也是初学的菜鸟,有问题请指正。