
tomcat
黄小厮
年年岁岁花相似,岁岁年年人不同
展开
-
Tomcat8源码分析系列-启动分析(四) webapp
前言上一篇文章中我们分析了 Service、Engine、Host、Pipeline、Valve 组件的启动逻辑,在 HostConfig 中会实例化 StandardContext,并启动 Context 容器,完成 webapp 应用程序的启动,这一块是最贴近我们开发的应用程序。在这一篇文章中,我们将要分析 tomcat 是如何解析并初始化应用程序定义的 Servlet、Filter、L...原创 2018-02-15 14:14:53 · 3348 阅读 · 0 评论 -
Tomcat8源码分析系列-关于tomcat热加载的一些思考
在前面的文章中,我们分析了 tomcat 类加载器的相关源码,也了解了 tomcat 支持类的热加载,意味着 tomcat 要涉及类的重复卸装/装载过程,这个过程是比较敏感的,一旦处理不当,可能会引起内存泄露卸载类我们知道,class 信息存放在元数据区(1.7是 Perm 区),这一块的内存相比堆而言,只占据非常小的空间,但是如果处理不当,还是有可能会导致内存溢出。这让我回想起几年前的一...原创 2018-05-30 17:13:18 · 1893 阅读 · 0 评论 -
Tomcat8源码分析系列-类加载器
类加载器在分析 tomcat 类加载之前,我们简单的回顾下 java 体系的类加载器启动类加载器(Bootstrap ClassLoader):加载对象是java的核心类库,把一些的 java 类加载到 jvm 中,它并不是我们熟悉的 ClassLoader,而是 jvm 层面由 C/C++ 实现的类加载器,负责加载 $JAVA_HOME/jre/lib 目录下 jvm 指定的类库,它是...原创 2018-04-29 00:45:15 · 2579 阅读 · 3 评论 -
Tomcat8源码分析系列-spring boot集成tomcat
spring boot集成tomcat;spring boot集成tomcat源码分析原创 2018-03-21 20:19:46 · 2477 阅读 · 0 评论 -
Tomcat8源码分析系列-Session源码解析
在 web 开发中,我们经常会用到 Session 来保存会话信息,包括用户信息、权限信息,等等。在这篇文章中,我们将分析 tomcat 容器是如何创建 session、销毁 session,又是如何对 HttpSessionListener 进行事件通知tomcat session 设计分析tomcat session 组件图如下所示,其中 Context 对应一个 webapp 应...原创 2018-03-29 00:29:35 · 2616 阅读 · 7 评论 -
Tomcat8源码分析系列-环境搭建
前言为什么要学习tomcat源码?tomcat是目前非常流行的web容器,其性能和稳定性也是非常出色的,学习其框架设计和底层的实现,不管是使用、性能调优,还是应用框架设计方面,肯定会有很大的帮助tomcat版本该系列博客的tomcat版本是8.5.24下载源码从apache官网下载tomcat源码包,本人以8.5.24版本为例,http://tomcat.apa...原创 2018-01-13 14:46:57 · 2888 阅读 · 1 评论 -
Tomcat8源码分析系列-tomcat框架设计
总体架构tomcat的总体架构如下图所示(摘自http://blog.csdn.net/jiaomingliang/article/details/47393141) 如上图所示,tomcat由Server、Service、Engine、Connerctor、Host、Context组件组成,其中带有s的代表在一个tomcat实例上可以存在多个组件,比如Context(s),tomcat...原创 2018-01-13 14:51:06 · 5757 阅读 · 5 评论 -
Tomcat8源码分析系列-启动分析(一) Lifecycle
Lifecycle在其他框架中也很常见,比如spring,它常用于具有生命周期的组件,由Lifecycle控制组件的初始化、启动、销毁等动作,方便应用程序获取、释放某些资源,或者是触发某些特定的事件。Tomcat也是如此,在学习整个启动流程之前,我们先行了解下Lifecycle的实现机制,便于理解整个流程。LifecycleLifecycle接口是一个公用的接口,定义了组件生命周期的一...原创 2018-01-13 14:53:49 · 6643 阅读 · 2 评论 -
Tomcat8源码分析系列-启动分析(二) Catalina初始化
# Bootstrap Tomcat运行是通过Bootstrap的main方法,在开发工具中,我们只需要运行Bootstrap的main方法,便可以启动tomcat进行代码调试和分析。Bootstrap是tomcat的入口,它会完成初始化ClassLoader,实例化Catalina以及load、start动作。在这一篇文章中,我们将会对tomcat初始化过程进行分析。main方法首...原创 2018-01-13 14:57:09 · 2769 阅读 · 0 评论 -
Tomcat8源码分析系列-启动分析(三) Catalina启动
在上一篇文章中,我们分析了tomcat的初始化过程,是由Bootstrap反射调用Catalina的load方法完成tomcat的初始化,包括server.xml的解析、实例化各大组件、初始化组件等逻辑。那么tomcat又是如何启动webapp应用,又是如何加载应用程序的ServletContextListener,以及Servlet呢?我们将在这篇文章进行分析我们先来看下整体的启动逻辑,to...原创 2018-02-02 23:40:01 · 1697 阅读 · 0 评论