Tomcat
文章平均质量分 84
主要记录Tomcat相关内容,主要包括源码解析、调优、常见问题等等。
许夜3
这个作者很懒,什么都没留下…
展开
-
Tomcat源码解析——热部署和热加载原理
在Tomcat中可以通过Host标签设置热部署,当 autoDeploy为true时,在运行中的Tomcat中丢入一个war包,那么Tomcat不需要重启就可以自动加载该war包。Tomcat的容器中都包含有 backgroundProcessorDelay 属性和 backgroundProcess方法,默认的实现是,在每个容器启动时,当backgroundProcessorDelay大于1时(单位是秒),则会周期性的执行当前容器及所有子容器的backgroundProcess方法。原创 2024-04-21 21:27:31 · 912 阅读 · 0 评论 -
Tomcat源码解析——类加载机制
在之前的Tomcat启动源码中,简单的介绍了Tomcat的四种类加载器,再复习一遍。类加载器类加载器的结构层次:commonLoader、catalinaLoader、sharedLoader可以在tomcat下的conf/catalina.properties文件中修改。在Tomcat的启动中,一开始就创建了commonLoader、catalinaLoader、sharedLoader类加载器并且加载对应设置的资源。原创 2024-04-20 21:05:38 · 861 阅读 · 0 评论 -
Tomcat源码解析——一次请求的处理流程
在SocketProcessor的run方法中,异步的进行解析,用对应的协议处理器处理,然后开始解析请求首行,请求头,等到解析完成并且没有错误时,则通过Adapter(适配器)的service方法,将请求传递给容器(Engine、Host、Context、Wrapper)。终于,在Wrapper中,Tomcat通过单例模式创建出用户自定义的Servlet,然后经过过滤器链的处理后,调用到Servlet的service方法中,此方法也是给用户实现处理请求的最终方法。原创 2024-04-20 11:59:38 · 444 阅读 · 0 评论 -
Tomcat源码解析——Tomcat的启动流程
在Catalina的load方法中,会找到server.xml文件,然后解析标签并创建出对应的实例对象,最终在调用最顶层的Server组件的init方法,会调用Service组件的初始化,而Service组件的会调用Connector组件的初始化(容器的初始化是懒加载的,即有请求达到时才开始初始化)。在catalina.sh脚本中,前面是环境判断和初始化参数,最终根据传递的start来执行上图的代码,最终会调用Tomcat的Bootstrap启动类的main方法,传递的参数是start。原创 2024-04-14 22:57:24 · 1305 阅读 · 0 评论 -
Tomcat源码解析——源码环境搭建
在进行源码阅读前,先下载源码包,这样便于做笔记和debug。我所用的版本是Tomcat7.0.68,JDK版本,我用的是1.8,可以使用其它版本,如果其它版本不行则可以换到1.8尝试。原创 2024-04-14 19:23:30 · 791 阅读 · 0 评论 -
Tomact源码解析——组件介绍
Tomcat的体系结构如图所示:Tomcat的体系结构分为两层,一层是Tomcat管理组件,一层是Tomcat容器组件;而Connector(连接器)是沟通管理组件和容器组件的桥梁,Connector将一个请求传递至Container,容器自上而下的去处理该请求。Tomcat的管理组件:Server、Service此类组件主要是为了管理好Tomcat下级的各项组件以及内容。容器组件:Engine、Host、Context、Wrapper。原创 2024-04-14 18:09:33 · 784 阅读 · 0 评论