Tomcat启动加载过程
2017-03-24 15:20
288 查看
我 是在看jvm类加载机制时突然想到我们经常使用的tomcat是如何启动?如何加载类的?于是顺藤摸瓜找了找,和大家分享下,比较粗糙,不要介意。
1、start.bat是启动tomcat的脚本,查看脚本可知其实是启动catalina.bat。
2、在catalina.bat中可以看到执行setclasspath.bat,setclasspath.bat是做一些变量参数设置,比如这里可以设置JVM的内存。
3、在catalina.bat最重要的启动入口:
在catalina.bat看到CLASSPATH=%CLASSPATH%%CATALINA_HOME%\bin\bootstrap.jar和MAINCLASS=org.apache.catalina.startup.Bootstrap,就知道bootstrap.jar包中的main方法是tomcat的主入口。
4、通过反编译我们可以看到如图:
这里有三个类加载器,主要使用commonLoader去加载tomcat的核心包,在catalina.properties中可以看到如下配置:
这些核心包中又有类加载器去加载我们的项目,这里我就没有继续追下去了,但是我想肯定与经常配置的server.xml有关,比如下面的配置:
1、start.bat是启动tomcat的脚本,查看脚本可知其实是启动catalina.bat。
2、在catalina.bat中可以看到执行setclasspath.bat,setclasspath.bat是做一些变量参数设置,比如这里可以设置JVM的内存。
3、在catalina.bat最重要的启动入口:
%_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION%
在catalina.bat看到CLASSPATH=%CLASSPATH%%CATALINA_HOME%\bin\bootstrap.jar和MAINCLASS=org.apache.catalina.startup.Bootstrap,就知道bootstrap.jar包中的main方法是tomcat的主入口。
4、通过反编译我们可以看到如图:
这里有三个类加载器,主要使用commonLoader去加载tomcat的核心包,在catalina.properties中可以看到如下配置:
common.loader=${catalina.base}/lib,${catalina.base}/lib/*.jar,${catalina.home}/lib,${catalina.home}/lib/*.jar
这些核心包中又有类加载器去加载我们的项目,这里我就没有继续追下去了,但是我想肯定与经常配置的server.xml有关,比如下面的配置:
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="%h %l %u %t "%r" %s %b" /> <Context path="/bcp" docBase="D:\dist\WebContent" antiResourceLocking="false" privileged="false" reloadable="true"/> </Host>
相关文章推荐
- Tomcat7源码分析——启动过程和类加载器
- 深入理解 Tomcat(五)源码剖析Tomcat 启动过程----类加载过程
- Tomcat启动过程原理详解 -- 非常的报错:涉及了2个web.xml等文件的加载流程
- 深入理解 Tomcat(五)源码剖析Tomcat 启动过程----类加载过程
- Tomcat 启动时类加载顺序
- Tomcat 启动时类加载顺序
- Linux启动过程中硬件模块的加载
- Tomcat6.0启动过程中可能遇到的一些问题及解决方案
- tomcat 4.1.30启动过程的源码分析
- tomcat启动过程:Catalina.class
- 如何在tomcat启动时自动加载一个类
- tomcat启动加载类的顺序:
- Linux启动过程中硬件模块的加载
- Tomcat的启动过程
- Tomcat启动时classloader加载顺序
- Linux启动过程中硬件模块的加载
- tomcat 4.1.30启动过程的源码分析
- tomcat启动时自动加载servlet
- tomcat启动过程
- Tomcat 5.5.26源代码分析——启动过程(二)