从官网下载tomcat源码
导入:创建Project选择Java Project from Existing Ant
buildfile,然后引入tomcat源码
依赖包:ant.jar、 jaxrpc.jar org.eclipse.jdt.core_3.3.1.v_780_R33x.jar(此包在myeclipse下)、wsdl4j-1.5.1.jar、jdk6
运行: org.apache.catalina.startup.Bootstrap类
<!--[if !supportLists]-->1.
<!--[endif]-->运行时配置参数start
<!--[if !supportLists]-->2.
<!--[endif]-->添加VM参数-Dcatalina.home="E:\Program
Files\Apache Software Foundation\Tomcat 6.0"为tomcat的安装地址。
setCatalinaHome();//设置系统属性值catalia.home,在开始运行Bootstrap时,就添加了此值。设置当前的工作路径。
setCatalinaBase();//设置catalia.base值
initClassLoaders();//初始化commonLoader,catalinaLoader,sharedLoader三大加载器
//在当前线程中设置catalinaLoader
Thread.currentThread().setContextClassLoader(catalinaLoader);
//securityClassLoad中加载一些相关的类
SecurityClassLoad.securityClassLoad(catalinaLoader);
//…利用反射调用Catalina类的setParentClassLoader
//至此初始化完成
catalia.home与catalia.base的区别: http://txy821.iteye.com/blog/557584
catalina.home和catalina.base这两个属性仅在你需要安装多个Tomcat实例而不想安装多个软件备份的时候使用,这样能节省磁盘空间。Tomcat目录下只有 bin 和 lib 目录可以被多个实例共用,其它目录conf、logs、temp、webapps和work每个Tomcat实例必须拥有其自己独立的备份。
catalina.home指向公用信息的位置,就是bin和lib的父目录。
catalina.base指向每个Tomcat目录私有信息的位置,就是conf、logs、temp、webapps和work的父目录。
仅运行一个Tomcat实例时,这两个属性指向的位置是相同的。
tomcat多实例运行介绍: http://blog.csdn.net/hansoft/article/details/647060
initClassLoaders:先得介绍CatalinaProperties类,此类有个loadProperties方法,方法中加载属性文件catalina.properties中的内容,添加到系统属性中。方法在类的静态代码块中被调用。调用createClassLoader方法创建加载器,首先通过catalinaProperties取得配置文件中的相关属性值(即lib存放的位置),然后由ClassLoaderFactory工厂创建。在此工厂中创建该加载器的classpath,最后通过StandardClassLoader(此类为ClassLoader的间接子类)创建一实例加载器。initClassLoaders()载入tomcat安装目录下,子目录common/lib、server/lib、shared/lib下的jar运行时库文件,并创建对应的三个classloader:commonLoader、catalinaLoader、sharedLoader,并且commonLoader是catalinaLoader和sharedLoader的父节点。Tomcat5是这样的结构,但在tomcat6中结构发生改,查看catalinaProperties文件可以看见server.loader和shared.loader都是为空的。
start启动时先初始化相应参数和目录,创建一个Digester用于解析server.xml,最后创建一个新的server并进行初始化(standardServer中的initialize方法)。最后调用Catalina中的start(),通过反射调用Lifecycle中的start方法。Lifecycle为一接口,定义Tomcat生命周期的相关内容,而StandardService为实现Lifecycle的子类。
Start方法中主要实现:1.修改生命周期状态 2.触发开始前的相关事件 3.开始定义的容器 4.开始定义的连接器 5.触发开始后的相关事件
分享到:
相关推荐
tomcat学习笔记 tomcat学习笔记
本文件为尚硅谷Tomcat的课堂学习笔记实录,讲解的清晰到位,适合入门Tomcat,掌握如何使用Tomcat
里面有log4j配置,以及Tomcat5.5加载管理员办法,以及在Tomcat中发布Web项目
Tomcat学习资料,轻量级服务器,java开发应用很广的一个服务器哦,不学会后悔的
tomcat学习
Tomcat学习文档
NULL 博文链接:https://zhuorulin.iteye.com/blog/1007340
tomcat学习与实践
tomcat学习资料,内附tomcat安装过程及应用实例,帮助你学习tomcat服务器
Tomcat学习笔记,图片比较多,懒得写博客,先上传
tomcat学习资料收集整理.pdf
tomcat学习资料收集整理。Tomcat可以运行Servlet和JSP,是一个小型的轻量级应用服务器,运行时占用系统资源小、扩展性好、支持负载平衡与邮件服务等开发应用系统中的常用功能,适用于中小型系统和并发访问用户不太多...
jBoss+tomcat学习笔记大全,jBoss+tomcat的帮助文档
当前资源以Tomcat8.5版本为基础,个人学习时总结的原理,以及自己的心得体会,分享给大家,多多沟通,多多交流......
Tomcat学习笔记和课件,欢迎学习爱好者下载资源,共同学习。。
关于tomcat服务器配置的详细说明,以及struts与此服务器的使用
强烈推荐,涉及tomcat启动脚本catlina,原理,server结构分析,类加载器 tomcat权威指南等资料
tomcat官网版本Tomcat+Java学习资源,有需要的拿去,不喜勿喷,里面的部分资源如下 信息检索 数据库设计 机器、深度学习 。。。。
TOMCat学习资料部分整理,包括一点点代码,服务器啥的