Idea 调试Tomcat源码

简介: 开篇 不知道从哪个途径被安利买了一本《Tomcat架构解析》的书,突然对Tomcat来了兴趣,准备花一段时间好好研究这个对自己来说是黑盒的容器,所以在未来一段时间里朋友圈应该会有大量这方面的分享。

开篇

 不知道从哪个途径被安利买了一本《Tomcat架构解析》的书,突然对Tomcat来了兴趣,准备花一段时间好好研究这个对自己来说是黑盒的容器,所以在未来一段时间里朋友圈应该会有大量这方面的分享。
 按照固有套路,阅读源码前得搭建基于idea集成开发环境的debug环境,这篇文章主要就是做这个事情的,当然必然是参考了前人的文章,在文末的参考文章中已经注明,以示尊重。


源码下载

 我是基于TOMCAT_8_5_34版本,所以source和binary的下载都是基于该版本。
需要注意的是在tomcat binary下载中需要选择core版本

 额外需要执行下面的配置

  • 目录结构
tomcat_study
├── TOMCAT_8_5_34 (tomcat源码)
└── apache-tomcat-8.5.34 (tomcat的core文件)
  • 新增pom.xml
    在TOMCAT_8_5_34的目录下新增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>Tomcat8.0</artifactId>
 <name>Tomcat8.0</name>
 <version>8.0</version>
 
 <build>
 <finalName>Tomcat8.0</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>2.3</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>3.4</version>
 </dependency>
 <dependency>
 <groupId>ant</groupId>
 <artifactId>ant</artifactId>
 <version>1.7.0</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.5.1</version>
 </dependency>
 </dependencies>
</project>


Idea配置

 Idea的配置按照下面的步骤进行操作:

  • 1、按照下面图示新增Application的配置信息
  • 2、在Man class:中填入:org.apache.catalina.startup.Bootstrap
  • 3、在VM options:中填入:-Dcatalina.home="apache-tomcat-8.5.34",catalina.home替换成tomcat binary core的目录
  • 4、jdk默认是1.8,因为我装的就是jdk1.8版本
  • 5、启动过程中Test模块会报错,且为TestCookieFilter.java,注释里面的测试内容即可
img_ef22e1f13a2c21b13aaa305934cf5dad.png
idea配置
img_cf5f6e786287b1adc4501d9acaf35f9d.png
idea配置


启动验证

浏览器中输入127.0.0.1:8080,得到下面的页面界面说明启动成功。

img_0fb4df0cc3bc2f1caa4d7df579a8f6d3.png


参考文章

img_7fa18fe81626d2e8c7798d55b89be836.png
Tomcat架构解析
目录
相关文章
|
4天前
|
Java
IDEA debug HashMap源码的心得
IDEA debug HashMap源码的心得
12 0
|
16天前
|
Java 测试技术
使用IDEA进行服务器远程debug调试
使用IDEA进行服务器远程debug调试
25 0
|
17天前
|
应用服务中间件
【SSM】如何在IDEA配置tomcat启动项目
【SSM】如何在IDEA配置tomcat启动项目
18 1
|
18天前
|
Java 应用服务中间件
解决IDEA tomcat控制台只有server日志
请注意,确保在调试或开发阶段使用更详细的日志级别(如 `DEBUG`或 `TRACE`),但在生产环境中应将其设置为更高的级别以减少日志量。
15 0
|
26天前
|
Web App开发 Java 应用服务中间件
【Java Web】在 IDEA 中部署 Tomcat
【Java Web】在 IDEA 中部署 Tomcat
|
26天前
|
传感器 小程序 Java
Java+saas模式 智慧校园系统源码Java Android +MySQL+ IDEA 多校运营数字化校园云平台源码
Java+saas模式 智慧校园系统源码Java Android +MySQL+ IDEA 多校运营数字化校园云平台源码 智慧校园即智慧化的校园,也指按智慧化标准进行的校园建设,按标准《智慧校园总体框架》中对智慧校园的标准定义是:物理空间和信息空间的有机衔接,使任何人、任何时间、任何地点都能便捷的获取资源和服务。
20 1
|
29天前
|
NoSQL 关系型数据库 MySQL
开发者福音:用IDEA和Iedis2加速Redis开发与调试
开发者福音:用IDEA和Iedis2加速Redis开发与调试
49 0
开发者福音:用IDEA和Iedis2加速Redis开发与调试
|
29天前
|
应用服务中间件
解决方案:IDEA控制台输出Tomcat中文乱码
解决方案:IDEA控制台输出Tomcat中文乱码
32 0
解决方案:IDEA控制台输出Tomcat中文乱码
|
1月前
|
Kubernetes Ubuntu Linux
通过 IntelliJ IDEA 对 containerd 进行源码级调试
本文介绍如何在 Ubuntu 22.04 系统上,通过 IntelliJ IDEA 对 containerd 进行源码级调试。我们将从 containerd 的安装、源码编译、验证调试信息的存在,到最终的调试过程中,每一步骤都进行详细讲解。
通过 IntelliJ IDEA 对 containerd 进行源码级调试
|
2月前
|
Java
IDEA 调试技巧
IDEA 调试技巧
21 1