一、构建项目(或引入项目)
1、官网下载apache-tomcat-8.5.50-src.tar,并解压
2、在apache-tomcat-8.5.50-src文件夹下面创建一个sources文件夹,并将conf、webapps 目录移进去
3、在 apache-tomcat-8.5.50-src 目录下,创建一个pom.xml文件,内容如下
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.1、创建一个空工程
4.2、直接导入项目
然后一路next即可。完成源码的构建。
其实4.1和4.2都能完成源码构建。
Tomcat也是用java开发的,本身也就是一个java的应用。那么它就用一个程序的入口。其实BootStrap这个类的main函数就是整个Tomcat启动的入口。
二、Tomcat源码的构建
1、全局搜索BootStrap
2、找主方法
3、将刚刚创建的source目录告诉项目
因为刚刚将conf移动进去了,现在的source都是一些配置信息,需要把配置告诉源码,它才可以启动
下图意思就是告诉源程序,配置文件在哪个路径下
-Dcatalina.home=D:\IEDA\ZJava\tomcat\apache-tomcat-8.5.50-src\sources
-Dcatalina.base=D:\IEDA\ZJava\tomcat\apache-tomcat-8.5.50-src\sources
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
-Djava.util.logging.config.file=D:\IEDA\ZJava\tomcat\apache-tomcat-8.5.50-src\sources/conf/logging.properties
4、启动成功
5、但是页面访问不了
运行 Bootstrap 类的 main 函数,此时就启动了tomcat,启动时候会去加载所配置的 conf 目录下 的server.xml等配置文件,所以访问8080端口即可,但此时我们会遇到如下的一个错误
原因是:Jsp引擎Jasper没有被初始化,无法编译JSP,需要在tomcat的源码ContextConfig类中 的configureStart方法中增加一行代码将 Jsp 引擎初始化
context.addServletContainerInitializer(new JasperInitializer(), null);