Tomcat源码解析之catalina 、bootstrap
来源:互联网 发布:使命召唤ol有mac版吗 编辑:程序博客网 时间:2024/06/05 05:04
首先看下Catalina这个类中主要的方法:
说白了,也就是启动、等待、停止几种情况,说到Catalina,不得不提到Bootstrap,这两个类可谓互为唇齿。
Bootstrap是为加载Catalina而准备的一套线程守护类,之所以绕个弯路需要通过Bootstrap来加载,这是因为某些依赖jar包或者加载器(比如:XML parser)需要灵性加载。为了松耦合性,在启动了时候,就包装了一个叫做Bootstrap的东东。
来看下Bootstrap中的start和stop
在start方法里用到了init()方法,我们看下具体实现:
IT学习者(www.itxxz.com)
- /**
- * Initialize daemon.
- */
- public void init() throws Exception {
- initClassLoaders();
- Thread.currentThread().setContextClassLoader(catalinaLoader);
- SecurityClassLoad.securityClassLoad(catalinaLoader);
- // Load our startup class and call its process() method
- if (log.isDebugEnabled())
- log.debug("Loading startup class");
- Class<?> startupClass =
- catalinaLoader.loadClass
- ("org.apache.catalina.startup.Catalina");
- Object startupInstance = startupClass.newInstance();
- // Set the shared extensions class loader
- if (log.isDebugEnabled())
- log.debug("Setting startup class properties");
- String methodName = "setParentClassLoader";
- Class<?> paramTypes[] = new Class[1];
- paramTypes[0] = Class.forName("java.lang.ClassLoader");
- Object paramValues[] = new Object[1];
- paramValues[0] = sharedLoader;
- Method method =
- startupInstance.getClass().getMethod(methodName, paramTypes);
- method.invoke(startupInstance, paramValues);
- catalinaDaemon = startupInstance;
- }
到这里可以清楚的看到,用到了大量的Class、getClass()、classLoad这种字眼,
说明在初始化的时候需要加载很多配置文件的,也就是引用tomcat的lib下jar包里的class类。
至此便可以理解为何在前一篇中通过Catalina来启动tomcat时,会加载很多相关的jar依赖了:
阅读全文
0 0
- Tomcat源码解析之catalina 、bootstrap
- tomcat源码解析(一)——Bootstrap和Catalina启动部分
- tomcat 中的 bootstrap 与 catalina
- tomcat 中的 bootstrap 与 catalina
- tomcat源码Catalina
- tomcat catalina.sh 解析
- tomcat之catalina使用Digester解析XML配置文件
- Tomcat 之 Catalina
- tomcat解析(八)Catalina.createStartDigester
- Tomcat catalina.bat 原理解析
- Tomcat源码的catalina中利用Digester解析conf/server.xml
- Tomcat源码的catalina中利用Digester解析conf/server.xml
- Tomcat源码分析-catalina.home和catalina.base
- Tomcat源码解析之连接器解析请求
- Tomcat源码阅读(三)Catalina.createStartDegester
- Tomcat源码阅读(三)Catalina
- tomcat源码分析连接coyote catalina
- Tomcat 源码阅读(二)Catalina.load
- MySQL数据库表设计中的注意事项
- 工厂模式之二——工厂模式【弥补简单工厂模式弊端】
- Ubuntu装Hadoop伪分布式
- 重写jquery的ajax方法
- C语言的简单应用(二)
- Tomcat源码解析之catalina 、bootstrap
- 分布式搜索elasticsearch java API 之(四)------删除索引数据
- sqlserver自定义函数
- 常见正则表达式【记录】
- CodeForces 831D Office Keys
- 微信小程序实现底部导航栏目示例
- spring框架学习(一)
- 微信服务号自定义服务器配置及验证
- Spark-on-YARN (来自学习笔记)