随笔分类 - 【22】Tomcat
摘要:Tomcat版本:apache-tomcat-8.5.54JDK版本:jdk1.8.0_171 在项目发布以后,有时候需要对基于生产环境部署的应用进行调试,以解决在开发环境无法重现的BUG。这时需要使用应用服务器的远程调试功能,这主要依赖Java 平台调试体系架构JPDA。在大多数情况下,我们并不需
阅读全文
摘要:Tomcat源码版本:apache-tomcat-8.5.54-srcJDK源码版本:jdk1.8.0_171 一、请求流程关键代码 public class CoyoteAdapter implements Adapter { ... @Override public void service(o
阅读全文
摘要:Tomcat源码版本:apache-tomcat-8.5.54-srcJDK源码版本:jdk1.8.0_171 一、服务端套接字绑定到IP和端口 org.apache.catalina.core.StandardServer::initInternal 初始化Server -->org.apache
阅读全文
摘要:Tomcat源码版本:apache-tomcat-8.5.54-srcJDK源码版本:jdk1.8.0_171 1、启动容器 org.apache.catalina.core.StandardHost::startInternal 启动Host-->org.apache.catalina.core.
阅读全文
摘要:Tomcat源码版本:apache-tomcat-8.5.54-src JDK源码版本:jdk1.8.0_171 一、容器相关接口1、org.apache.catalina.Container容器接口容器是一个处理用户servlet请求并返回对象给 web 用户的模块。org.apache.cata
阅读全文
摘要:Tomcat源码版本:apache-tomcat-8.5.54-srcJDK源码版本:jdk1.8.0_171 Tomcat的Service包含一个容器组件和多个连接器组件,连接器负责接收请求,容器负责处理请求。 一、连接器代码包org.apache.coyote是Tomcat连接器框架包。Coyo
阅读全文
摘要:Tomcat源码版本:apache-tomcat-8.5.54-srcJDK源码版本:jdk1.8.0_171 一、服务器1、org.apache.catalina.Server接口一个服务器提供了一种优雅的机制来启动和停止整个系统,不必再单独的启动连接器和容器了。当服务器启动的时候,它启动内部的所
阅读全文
摘要:Tomcat源码版本:apache-tomcat-8.5.54-srcJDK源码版本:jdk1.8.0_171 1、juli包(1)Tomcat日志包:org.apache.juli。默认情况下,Tomcat使用自身的juli作为Tomcat内部的日志处理系统,而juli默认使用JDK提供的日志ja
阅读全文
摘要:Tomcat源码版本:apache-tomcat-8.5.54-srcJDK源码版本:jdk1.8.0_171 1、Lifecycle接口Lifecycle接口统一管理Tomcat生命周期。(1)接口定义 public interface Lifecycle { // 13个状态常量值 publi
阅读全文
摘要:Tomcat源码版本:apache-tomcat-8.5.54-srcJDK源码版本:jdk1.8.0_171 org.apache.tomcat.util.digester.Digester用于解析server.xml,通过它可以很方便的从xml文件生成java对象。1、Java解析XML文件主要
阅读全文
摘要:Tomcat源码版本:apache-tomcat-8.5.54-srcJDK源码版本:jdk1.8.0_171 先来讲一下JVM的类加载机制。 一、JVM类加载机制1、继承关系 ExtClassLoader和AppClassLoader都继承父类ClassLoader,ClassLoader有一个属
阅读全文
摘要:tomcat源码版本:apache-tomcat-8.5.54-src 一、代码流程 1、代码入口(运行startup.bat或startup.sh) Bootstrap::main 2、初始化 -->Bootstrap::init 初始化类加载器java.net.URLClassLoader --
阅读全文
摘要:一、整体架构 Tomcat主要有两个组件:连接器Connector和容器Container。Tomcat为了实现统一管理连接器和容器等各种组件,额外添加了服务器组件(server)和服务组件(service),一个server可以有多个service,一个service包含多个连接器和一个容器。 1
阅读全文
摘要:为什么要学习Tomcat源码?学习源码的目的是什么?学习Tomcat源码属于理论学习,实践使用属于技能练习,长时间使用和处理使用问题属于经验积累。1、掌握Tomcat原理理论, 可以进行调优:在各种场景下,合理的配置使用Tomcat,最大限度的发挥Tomcat的性能。 可以解决问题:根据原理来解决使
阅读全文