Tomcat9源码环境搭建
本文介绍如何搭建tomcat源码环境,以进行tomcat源码的调试。本次搭建Tomcat 9 源码环境的开发环境如下:
JDK:1.8,Tomcat 9 需要 Java Development Kit (JDK) 1.8 或更高版本的支持,可从Oracle 官网下载。
MAVEN:3.9.9
点击查看tomcat和jdk匹配关系
下载 Tomcat9 源码
访问官网:打开浏览器,访问Apache Tomcat 官方下载页面。
选择源码包:在页面中找到 “Archives”部分,这里提供了Tomcat9的各个版本的源码包下载地址,点击对应的版本,然后点击src,即可下载对应的源码。我这里使用的tomcat-9.0.55版本。
.zip 格式:适用于 Windows 系统,下载链接如apache-tomcat-9.0.55-src.zip,点击即可下载。
.tar.gz 格式:常用于 Linux 和 macOS 系统,下载链接如apache-tomcat-9.0.55-src.tar.gz 。在 Linux 系统中,可以使用命令行工具如 “tar -zxvf apache-tomcat-9.0.55-src.tar.gz” 进行解压。
下载完成后,将源码包解压到你希望存放的目录。解压后的目录结构包含了 Tomcat 9 的所有源代码、配置文件以及构建脚本等内容,为后续搭建源码环境提供了基础。
在 Idea 中导入源码
添加配置
idea中直接打开解压后的tomcat文件夹即可打开项目,打开后我们首先要配置项目构建文件 pom.xml
在项目的根目录下,新建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">
<modelVersion>4.0.0</modelVersion>
<groupId>org.apache.tomcat</groupId>
<artifactId>Tomcat9.0.55</artifactId>
<name>Tomcat9.0.55</name>
<version>c</version>
<build>
<finalName>Tomcat9.0.55</finalName>
<sourceDirectory>java</sourceDirectory>
<!--<testSourceDirectory>test</testSourceDirectory>-->
<resources>
<resource>
<directory>java</directory>
</resource>
</resources>
<testResources>
<testResource>
<directory>test</directory>
</testResource>
</testResources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.1</version>
<configuration>
<encoding>UTF-8</encoding>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.easymock</groupId>
<artifactId>easymock</artifactId>
<version>4.0.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.ant</groupId>
<artifactId>ant</artifactId>
<version>1.10.8</version>
</dependency>
<dependency>
<groupId>wsdl4j</groupId>
<artifactId>wsdl4j</artifactId>
<version>1.6.2</version>
</dependency>
<dependency>
<groupId>javax.xml</groupId>
<artifactId>jaxrpc</artifactId>
<version>1.1</version>
</dependency>
<dependency>
<groupId>org.eclipse.jdt.core.compiler</groupId>
<artifactId>ecj</artifactId>
<version>4.6.1</version>
</dependency>
<dependency>
<groupId>biz.aQute.bnd</groupId>
<artifactId>biz.aQute.bndlib</artifactId>
<version>5.1.1</version>
</dependency>
<dependency>
<groupId>com.unboundid</groupId>
<artifactId>unboundid-ldapsdk</artifactId>
<version>4.0.13</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
构建项目
右击刚刚添加的pom文件,选择 + Add as Maven Project
然后设置apache-tomcat-9.0.55-src/java为项目的源码目录。
找到启动类,org.apache.catalina.startup.Bootstrap,编辑启动参数。
添加VM options 添加时注释要删除
-Dcatalina.home=F:/Resource/apache-tomcat-9.0.55-src #替换为自己的目录
-Dcatalina.base=F:/Resource/apache-tomcat-9.0.55-src
-Djava.endorsed.dirs=F:/Resource/apache-tomcat-9.0.55-src/endorsed
-Djava.io.tmpdir=F:/Resource/apache-tomcat-9.0.55-src/temp
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
-Djava.util.logging.config.file=F:/Resource/apache-tomcat-9.0.55-src/conf/logging.properties
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=8011
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
-Duser.language=en #避免出现中文乱码问题
-Duser.region=US
org.apache.jasper.compiler.JDTCompiler类中的报错注释掉
启动项目
直接启动org.apache.catalina.startup.Bootstrap的时候没有加载org.apache.jasper.servlet.JasperInitializer,从而无法编译JSP。在org.apache.catalina.startup.ContextConfig#configureStart中修改源码将JSP解析器初始化。
//JSP解析器初始化
context.addServletContainerInitializer(new JasperInitializer(), null);
再次启动项目,浏览器访问 http://localhost:8080
通过以上步骤,即可成功搭建 Tomcat 9 源码环境。在这个环境中,可以深入研究 Tomcat 的源代码,了解其内部工作原理,进行调试和修改。