java web 简析--二,TOMCAT结构及运行过程解析

tomcat文件结构

java web 简析--二,TOMCAT结构及运行过程解析_第1张图片

了解tomcat启动过程:

startup.bat

bin/startup.bat批处理文件解读:http://blog.csdn.net/pangdingshan/article/details/7214293

startup.bat 的作用主要是检查catalina.bat 执行所需环境,并调用catalina.bat 批处理文件

catalina.bat

bin/catalina.bat批处理文件解读:http://www.cnblogs.com/fantiantian/p/3623740.html

:caltalina.bat的作用是生成如下命令:

转化为如下命令:
Using CATALINA_BASE:   "F:\DBSPACEBAC\apache-tomcat-7.0.62-src\output\build"
Using CATALINA_HOME:   "F:\DBSPACEBAC\apache-tomcat-7.0.62-src\output\build"
Using CATALINA_TMPDIR: "F:\DBSPACEBAC\apache-tomcat-7.0.62-src\output\build\temp"
Using JRE_HOME:        "G:\Program Files\Java\jdk1.6.0_45"
Using CLASSPATH:       "F:\DBSPACEBAC\apache-tomcat-7.0.62-src\output\build\bin\bootstrap.jar;F:\DBSPACEBAC\apache-tomcat-7.0.62-src\output\build\bin\
tomcat-juli.jar"
start "Tomcat" "G:\Program Files\Java\jdk1.6.0_45\bin\java.exe"  
-Djava.util.logging.config.file="F:\DBSPACEBAC\apache-tomcat-7.0.62-src\output\build\conf\logging.properties" 
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager   
-Djava.endorsed.dirs="F:\DBSPACEBAC\apache-tomcat-7.0.62-src\output\build\endorsed" 
-Dcatalina.base="F:\DBSPACEBAC\apache-tomcat-7.0.62-src\output\build"
-Dcatalina.home="F:\DBSPACEBAC\apache-tomcat-7.0.62-src\output\build" 
-Djava.io.tmpdir="F:\DBSPACEBAC\apache-tomcat-7.0.62-src\output\build\temp" 


-classpath "F:\DBSPACEBAC\apache-tomcat-7.0.62-src\output\build\bin\bootstrap.jar;F:\DBSPACEBAC\apache-tomcat-7.0.62-src\output\build\bin\tomcat-juli.jar" 

org.apache.catalina.startup.Bootstrap  start
实际执行的命令为:
java  
-Djava.util.logging.config.file="F:\DBSPACEBAC\apache-tomcat-7.0.62-src\output\build\conf\logging.properties" 

-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager   
-Djava.endorsed.dirs="F:\DBSPACEBAC\apache-tomcat-7.0.62-src\output\build\endorsed" 
-Dcatalina.base="F:\DBSPACEBAC\apache-tomcat-7.0.62-src\output\build"
-Dcatalina.home="F:\DBSPACEBAC\apache-tomcat-7.0.62-src\output\build" 
-Djava.io.tmpdir="F:\DBSPACEBAC\apache-tomcat-7.0.62-src\output\build\temp" 


-classpath "F:\DBSPACEBAC\apache-tomcat-7.0.62-src\output\build\bin\bootstrap.jar;F:\DBSPACEBAC\apache-tomcat-7.0.62-src\output\build\bin\tomcat-juli.jar" 

org.apache.catalina.startup.Bootstrap  start

 
===以下为batch命令中start命令的相关参数解析====  
START 
["title"] 
[/D path] 
"title" 在窗口标题栏中显示的标题。
path 启动目录。


===以下为java中java命令的相关参数解析====  
用法: java [-options] class [args...]
           (执行类)
   或  java [-options] -jar jarfile [args...]
           (执行 jar 文件)
[-options]其中选项包括:
    -classpath <目录和 zip/jar 文件的类搜索路径>
                  用 ; 分隔的目录, JAR 档案
                  和 ZIP 档案列表, 用于搜索类文件。
    -D<名称>=<值>
                  设置系统属性

 例如:可以在运行前配置一些属性,比如路径什么的。java -Dconfig="d:/config/config.xml" Abc  

 这样在Abc中就可以通过System.getProperty("config");获得这个值了

[args..]class类中需要的参数
总结以上的Tomcat启动bat脚本,为如下逻辑:

startup.bat=catalina.bat start=java Bootstrap start(附带-D、-classpath选项)

Bootstrap.java

参考: 《Tomcat8源码编译及导入Eclipse中研究》http://www.cnblogs.com/lanxuezaipiao/p/3640923.html

需要注意:

1,jdk版本和tomcat版本需要对应,例如:tomcat7使用jdk1.6版本即可,使用高的jdk版本,在使用ant命令时会报类编译错误。

2,导入的包设置为项目的source:

将java设置成source folder,java build path ->Source->Add folder...->选择java。

3,可以通过tomcat源码目录中输入命令:ant ide-eclipse获取需要的jar包

加载的JAR报为ant目录下lib中的ant.jar,将base.path的值对应的文件中将所有jar包加载

3,找到类:org.apache.catalina.startup包中的Bootstrap类。

run as:在Arguments的VM arguments中设置

-Dcatalina.home="d:\output\build"

参考:《查看tomcat启动文件都干点啥---Bootstrap.java》http://www.cnblogs.com/fantiantian/p/3638016.html

  在此文中我们得出在(tomcat7.0版本中):

  (1)Bootstrap中如何通过创建的commonLoader=catalinaLoader=sharedLoader来加载类。

  (2)在Bootstrap中使用反射机智来加载来调用catalinaDaemon中的方法。

  (3)如何获取catalina.properties配置文件。 

==========================================

在这里我们知道TOMCAT启动过程,但是这里并没有解答tomcat作为容器是如何工作的,在了解这个问题之前,我们先来了解下容器的作用,如此再回来带着目标看tomcat的源码。

 



你可能感兴趣的:(java web 简析--二,TOMCAT结构及运行过程解析)