您的位置:首页 > 运维架构 > Tomcat

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

2015-05-28 18:10 806 查看

tomcat文件结构





了解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的源码。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: