一、构建项目(或引入项目)

1、官网下载apache-tomcat-8.5.50-src.tar,并解压

2、在apache-tomcat-8.5.50-src文件夹下面创建一个sources文件夹,并将conf、webapps 目录移进去

image.png

3、在 apache-tomcat-8.5.50-src 目录下,创建一个pom.xml文件,内容如下

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
  5. http://maven.apache.org/xsd/maven-4.0.0.xsd">

4.1、创建一个空工程

image.png
image.png

image.png

image.png

image.png

image.png

4.2、直接导入项目

image.png

image.png

然后一路next即可。完成源码的构建。
其实4.1和4.2都能完成源码构建。

Tomcat也是用java开发的,本身也就是一个java的应用。那么它就用一个程序的入口。其实BootStrap这个类的main函数就是整个Tomcat启动的入口。

二、Tomcat源码的构建

1、全局搜索BootStrap

image.png

2、找主方法

image.png

image.png

3、将刚刚创建的source目录告诉项目

因为刚刚将conf移动进去了,现在的source都是一些配置信息,需要把配置告诉源码,它才可以启动
image.png
下图意思就是告诉源程序,配置文件在哪个路径下
image.png

  1. -Dcatalina.home=D:\IEDA\ZJava\tomcat\apache-tomcat-8.5.50-src\sources
  2. -Dcatalina.base=D:\IEDA\ZJava\tomcat\apache-tomcat-8.5.50-src\sources
  3. -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
  4. -Djava.util.logging.config.file=D:\IEDA\ZJava\tomcat\apache-tomcat-8.5.50-src\sources/conf/logging.properties

image.png

image.png

4、启动成功

image.png

5、但是页面访问不了

运行 Bootstrap 类的 main 函数,此时就启动了tomcat,启动时候会去加载所配置的 conf 目录下 的server.xml等配置文件,所以访问8080端口即可,但此时我们会遇到如下的一个错误

image.png

原因是Jsp引擎Jasper没有被初始化,无法编译JSP,需要在tomcat的源码ContextConfig类中 的configureStart方法中增加一行代码将 Jsp 引擎初始化

context.addServletContainerInitializer(new JasperInitializer(), null);

image.png

6、重启 Tomcat,正常访问即可。到此,Tomcat 源码构建完毕。

image.png