首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

Tomcat源码-起动.初始化(加载类包)分析三

2012-11-16 
Tomcat源码---启动.初始化(加载类包)分析三一,启动Tomcat是从org.apache.catalina.startup.Bootstrap#main

Tomcat源码---启动.初始化(加载类包)分析三

一,启动

Tomcat是从org.apache.catalina.startup.Bootstrap#main()开始启动.代码如下:

?

?

?从以上可以很清楚的看懂tomcat是通过参数的不同进行相应的命令调用.

?启动之前要进行相应的init()初始化,进行相应的环境设置以及包的加,以下我们查看下init的方法.

二,初始化(Bootstrap#init())

?

?

根据以上的设置tomcat主要对类加载作了以下方式:

?

b) Load startup class (reflection)

org.apache.catalina.startup.Catalina

setParentClassloader -> sharedLoader

Thread.contextClassloader -> catalinaLoader

---------------------------------------------------

以下对java中的类加载进行归纳:

可参考文章:http://blog.chenlb.com/2009/06/java-classloader-architecture.html

?

以上用线程设置classloader的目的是:

java默认的线程上下文类加载器是 系统类加载器(AppClassLoader)。

?

?? 使用Thread.currentThread().setContextClassLoader(classloader)时,线程上下文 Classloader就变成了指定的Classloader了。此时,在本线程或子线程的任意一处地方,调用Thread.currentThread(). getContextClassLoader(),都可以得到前面设置的Classloader。

?

如果要扩展classloader对类包进行加载也可扩展URLCloassLoader类

?

热点排行