Tomcat-运行原理

2022-04-25  本文已影响0人  洛神灬殇

1.Servlet容器-应用服务器

server.xml读取:(运行协议+工作模式+设置线程池)

tomcat入口程序:主方法main方法->org.apache.catalina.startup.Bootstrap

createDigster()

通过Digster去解析xml,生成对应的对象服务
Server

org.apache.catalina.startup.Bootstrap

Engine ()

Host(虚拟主机节点)

   定义域名,webapp部署根包名称,是否解压war包、是否自动部署。

   其实就是主要负责定义主机的域名,匹配到了去找不同的context上下文。 

   默认会去找localhost。

   虚拟主机

Context(应用上下文节点)

标识应用上下文

层级结构

servlet(食物)->wrapper(包装)->context(外层大袋子)->Host(皮包)->Engine(汽车)

其实上上面就是一个关系层次关系包装

TomcatJavaEXT虚拟机Web

   当我们启动一个tomcat的服务的时候,jar包和claess文件是是以怎么样的顺序被加载进来的?

加载顺序:

1.$java_home/lib 目录下的java核心api

2.$java_home/lib/ext 目录下的java扩展jar包

3.java -classpath/-Djava.class.path所指的目录下的类与jar包

4.$CATALINA_HOME/common目录下按照文件夹的顺序从上往下依次加载

5.$CATALINA_HOME/server目录下按照文件夹的顺序从上往下依次加载

6.$CATALINA_BASE/shared目录下按照文件夹的顺序从上往下依次加载

7.我们的项目路径/WEB-INF/classes下的class文件

8.我们的项目路径/WEB-INF/lib下的jar文件

在同一个文件夹下,jar包是按顺序从上到下依次加载

由ClassLoader的双亲委托模式加载机制我们可以知道,假设两个包名和类名完全相同的class文件不再同一个jar包,如果一个class文件已经被加载java虚拟机里了,那么后面的相同的class文件就不会被加载了。

上一篇下一篇

猜你喜欢

热点阅读