Tomcat
2024-07-20 18:20:37 3 举报
AI智能生成
源码
作者其他创作
大纲/内容
整体架构图
子主题
子主题
亮点
以面向对象的思想,对web服务器的组件体系设计,非常的优秀,抽象的非常好
网络IO和多线程并发的模型,设计的成熟和稳定
web服务器的技术上的机制,设计的非常成熟和完善,
包括但是不限于web容器的规范、servlet规范的支持、
web应用的部署和加载、JSP模板解析引擎、安全机制、共享会话机制、集群机制、JNDI
包括但是不限于web容器的规范、servlet规范的支持、
web应用的部署和加载、JSP模板解析引擎、安全机制、共享会话机制、集群机制、JNDI
Bootstrap和catalina
1 当你执行一个他的启动脚本,startup.sh【本质启动jvm】
2 jvm进程启动,加载你指定的main类【对于tomcat而言,
他的启动类就是 Bootstrap】
他的启动类就是 Bootstrap】
3 bootstrap会去构建一个catalina对象【catalina就代表了一个完整的tomcat吧】
4 Catalina会去解析配置文件,server.xml,然后根据配置,
去动态的构建出来整个tomcat,包括server在内的各种组件,
比如构建server,server内部会去构建和启动connector、engine一类的组件,
mapper,executor这些东西
去动态的构建出来整个tomcat,包括server在内的各种组件,
比如构建server,server内部会去构建和启动connector、engine一类的组件,
mapper,executor这些东西
启动方式
外置tomcat(通过脚本启动的方式)通过解析web.xml启动spring容器【配置监听器】
外置tomcat通过零xml方式启动spring容器,(就是通过tomcat SPI机制进行启动)
springboot用到的容器是AnnotationConfigServletWebServerApplicationContext,
他是可以解析注解的并且对他的refresh()里的onrefresh()进行了重写,进行创建tomcat实例,启动tomcat。
他是可以解析注解的并且对他的refresh()里的onrefresh()进行了重写,进行创建tomcat实例,启动tomcat。
设计模式
外观模式
观察者模式
责任链模式
模板方法模式
命令模式
类加载机制
tomcat的类加载机制
破坏双亲委托机制【支持部署多应用】
jvm的类加载机制
启动类加载器【%JAVA_HOME%/jre/lib】
扩展类加载器【%JAVA_HOME%加e/lib/ext】
应用程序类加载器【指定目录下的或者-classpath运行 参数指定的Jar包】
双亲委托机制
双亲委托机制是为了保证一个 Java 类在 JVM 中是唯一的
代码实现的逻辑
1 AppClassLoader 继承了 ClassLoader
2 ExtClassLoader 继承 ClassLoader
3 AppClassLoader 的 parent 成员变量指向 ExtClassLoader 对象
4 AppClassLoader ExtClassLoader 重写了 loadClass和findClass 方法,类没加载到的时候则调用 父类的类加载
破坏双亲委托机制
1 自定义类加载器,继承 ClassLoader 抽象类
2 重写 findClass 和 loadClass 方法
serlvet
SpringMVC和Tomcat关系
HttpServletService → 判断请求 如果Get请求
→ FrameworkServleDoGet_方法 → DispatcherServletdoService方法
→ doDispatch ();
→ FrameworkServleDoGet_方法 → DispatcherServletdoService方法
→ doDispatch ();
子主题
旧时代的web时代
0 条评论
下一页