我 是在看jvm类加载机制时突然想到我们经常使用的tomcat是如何启动?如何加载类的?于是顺藤摸瓜找了找,和大家分享下,比较粗糙,不要介意。
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>
相关推荐
详细说明了tomcat启动过程中 加载资源的顺序
将tomcat加入到本地服务中去,设置tomcat的服务自动启动,这样在服务器上通过tomcat运行的项目,即使服务器重启,tomcat也可以自动重启,这样,项目也就不会宕机了。
3.这里只需要修改Nginx的配置,让它通过tomcat来转发,所以我们在这一步只需要在nginx.conf中添加几行代码就行。 如果看不懂 。建议直接拿我替来用。 Copy下面的内容 替换 你的nginx.conf注意黄色端口要改为你的。 ...
最近遇到了一个奇葩的问题就是应用启动失败,但是tomcat没有报任何的日志出来,log4j.properties日志级别写的是debug级别也没用。 解决过程 遇到这种情况,可以试着在web应用的classpath目录添加一个logging....
一.说明: 配置如下:Win2000 Server + IIS 5.0(Win2000自带)+ ...启动tomcat 安装完tomcat之后(具体安装过程略),要启动Tomcat很简单,首先可以查看tomcat\bin\startup.bat文件,利用控制面板里面的系统
我在项目开发过程中,经常要改动Java/JSP 文件,但是又不想从新启动服务器(服务器从新启动花时间),想直接获得(debug)结果.有两种方式热部署 和热加载: 1.热加载:在server.xml -> context 属性中 设置 ...
redis已经有组件支持直接在tomcat7中设置下将redis作为tomcat默认的session存储器,下面介绍下配置过程 1.从http://redis.io/下载redis,按照redis服务端 wget http://download.redis.io/redis-stable.tar.gz ...
SSO是公司一个已经存在了若干年的项目,后端采用SpringMVC、...编码简单,SpringBoot只需要在pom文件中添加一个starter-web依赖,即可帮助开发者快速启动一个web容器,非常方便。配置简单,SpringBoot可以通过简单
xml java系统源码 ClassFinal 介绍 ...framework、swagger等需要在启动过程中扫描注解或生成字节码的框架。 支持maven插件,添加插件后在打包过程中自动加密。 支持加密WEB-INF/lib或BOOT-INF/lib下的
1、安装Java: 安装的是jdk1.7.0_09,安装... war包在tomcat启动时会自动解压并加载应用。 5、启动tomcat服务器,这样就可以通过本地浏览器访问http://localhost/8080/dangdang/main/mian.jsp 进入系统应用主页了。
这时在windows的系统托盘中会显示标识Tomcat服务器启动状态的图标,如果显示为,则说明Tomcat服务器没有启动,这时可以在该图标上单击鼠标右键在弹出的快捷菜单中选择“Start Service”菜单项启动Tomcat服务器,启动...
│ 11.nginx的安装及启动、停止.avi │ 12.nginx的配置文件-通过端口号区分虚拟机.avi │ 13.通过域名配置虚拟机.avi │ 淘淘商城第二天笔记.docx │ ├─03.第三天 │ 01.课程回顾.avi │ 02.课程计划.avi │ 03....
将war放入tomcat的webapps目录,启动tomcat即可生成eclipse项目文件mvn eclipse:eclipse -Dwtpversion=1.0查看依赖树mvn dependency:tree在docker容器中运行先启动一个mysql容器docker run --name rk_cms_db -...
支持maven插件,添加插件后在打包过程中自动加密。支持加密WEB-INF/lib或BOOT-INF/lib下的依赖jar包。环境依赖:JDK 1.8 +本工具使用AES算法加密class文件,密码是保证不被破解的关键,请保存好密码,请勿泄漏。密码...
BBS论坛的源代码 运行方式如下: 1.将SimpleBBS\database\Student.mdf以及SQLTest.mdf这...7.启动Tomcat,运行新建的虚拟目录的站点 以下是笔者提供的在Tomcat/conf/server.xml中配置的虚拟目录的XML代码,仅供参考: ...
重新启动Tomcat e.访问首页测试 如果缺少包文件,请登录在线支持论坛下载 如果在安装使用过程中有任何问题欢迎访问 http://www.wanglong.cc/bbs/forumdisplay.php?fid=14 咨询 3.其他说明 本软件版本是V3.0,...
JuShaTa容器 JuShaTa是一个Java容器,提供模块隔离及...但是在一个Java应用里面包含多个SpringBoot服务时,这些服务可能会调用不同版本的jar包,那么在程序启动或者运行过程中可能会报NoSuchMethodException这样的异常
重新启动Tomcat e.访问首页测试 如果缺少包文件,请登录在线支持论坛下载 如果在安装使用过程中有任何问题欢迎访问 http://www.wanglong.cc/bbs/forumdisplay.php?fid=14 咨询 3.其他说明 本软件版本是V...
将生成的SchoolEbay.war添加到Tomcat的webapps目录下,并启动Tomcat、启动Sql Server。访问http://localhost:8080/SchoolEbay/index.jsp,可启动本项目。 Ch09:Ajax技术在网上教学平台的应用 安装JDK,配置环境...
在这里我们设默认安装目录为c:\Tomcat安装完毕,更改环境变量(同上进入[环境变量]对话框),用同样的方法把c:\Tomcat添加到TOMCAT_HOME环境变量中。启动Tomcat,在浏览器的[地址]下拉列表框中输入...