拆解Tomcat10: (二) 在Idea中调试最新的Tomcat10源码(一)

简介: 拆解Tomcat10: (二) 在Idea中调试最新的Tomcat10源码

1. 下载源代码

可以到Tomcat官网下载源码压缩包,也可以去GitHub仓库Clone。

目前最新的是2021-12-08发布的10.0.14版。


1.1 下载压缩包

前往网址Tomcat官网:Apache Tomcat® - Apache Tomcat 10 Software Downloads


40.png

40.png

1.2 GitHub下载

仓库地址:apache/tomcat: Apache Tomcat (github.com)

如果想在代码中做一些注释,可以fork到自己的账号。执行如下命令,下载10.0.14版本:

git clone -b 10.0.14 https://github.com/apache/tomcat.git

2. 采用Maven方式构建

Tomcat默认采用的是Ant方式构建,官网中也对用其他方式做了提示:


重要提示:这不是构建 Tomcat 的支持方法; 此信息不提供任何保证:-)。 构建 Tomcat 的唯一支持方法是使用上述 Ant 构建。 但是,一些开发人员喜欢使用 Java IDE 处理 Java 代码。


为了方便调试,我们采用Maven方式在Idea中调试源码。


2.1 创建pom.xml文件

首先在下载的代码根目录创建一个Maven的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>tomcat10</artifactId>
  <version>10.0.14</version>
  <name>tomcat10</name>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.13.2</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.easymock</groupId>
      <artifactId>easymock</artifactId>
      <version>4.3</version>
    </dependency>
    <dependency>
      <groupId>org.apache.ant</groupId>
      <artifactId>ant</artifactId>
      <version>1.10.12</version>
    </dependency>
    <dependency>
      <groupId>wsdl4j</groupId>
      <artifactId>wsdl4j</artifactId>
      <version>1.6.3</version>
    </dependency>
    <dependency>
      <groupId>javax.xml</groupId>
      <artifactId>jaxrpc-api</artifactId>
      <version>1.1</version>
    </dependency>
    <dependency>
      <groupId>org.eclipse.jdt</groupId>
      <artifactId>org.eclipse.jdt.core</artifactId>
      <version>3.28.0</version>
    </dependency>
    <dependency>
      <groupId>org.eclipse.jdt</groupId>
      <artifactId>ecj</artifactId>
      <version>3.28.0</version>
    </dependency>
    <dependency>
      <groupId>org.apache.tomcat</groupId>
      <artifactId>jakartaee-migration</artifactId>
      <version>1.0.0</version>
    </dependency>
    <dependency>
      <groupId>biz.aQute.bnd</groupId>
      <artifactId>biz.aQute.bndlib</artifactId>
      <version>6.1.0</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>com.unboundid</groupId>
      <artifactId>unboundid-ldapsdk</artifactId>
      <version>6.0.2</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
  <build>
    <finalName>Tomcat10.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>3.6.1</version>
        <configuration>
          <encoding>UTF-8</encoding>
          <source>1.8</source>
          <target>1.8</target>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>

右键点击代码文件夹,选择用Idea打开。或者再Idea中通过File->New->Project from Sources的方式打开代码文件夹:

41.png

点击Maven的Reload按钮开始加载依赖:

42.png

等待加载完成。


目录
相关文章
|
监控 网络协议 Java
Tomcat源码解析】整体架构组成及核心组件
Tomcat,原名Catalina,是一款优雅轻盈的Web服务器,自4.x版本起扩展了JSP、EL等功能,超越了单纯的Servlet容器范畴。Servlet是Sun公司为Java编程Web应用制定的规范,Tomcat作为Servlet容器,负责构建Request与Response对象,并执行业务逻辑。
Tomcat源码解析】整体架构组成及核心组件
|
监控 测试技术 开发者
IDEA项目调试你都会用了么,快看看是否有你不知道的调试技巧
在IntelliJ IDEA中,熟练运用调试工具可显著提升开发效率。通过设置断点、单步执行、变量监控等功能,快速定位问题并优化代码性能。此外,掌握多线程调试、异常处理及远程调试技巧也至关重要。为提高效率,建议合理使用条件断点、快捷键与日志监控,同时不断学习总结经验。若觉得有用,别忘了点赞收藏!
IDEA项目调试你都会用了么,快看看是否有你不知道的调试技巧
|
Java 应用服务中间件 Maven
IDEA创建一个Servlet项目(tomcat10)
IDEA创建一个Servlet项目(tomcat10)
1204 1
|
SQL 存储 数据处理
实时计算 Flink版产品使用合集之idea本地调试,在哪里查看执行结果
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStreamAPI、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
安全 Java 应用服务中间件
避免Tomcat调试信息泄露的最佳实践
小米分享了团队解决网站敏感信息泄露问题的经历。在处理运行时错误时,Tomcat显示的调试信息可能泄露。尝试过使用Spring Boot的`ErrorAttributes`接口和修改Tomcat默认错误页面均未成功。最终,他们通过自定义错误页面并配置`application.yml`来隐藏敏感信息,成功解决了问题。这个方法推荐给其他开发者作为避免调试信息泄露的安全实践。
355 3
避免Tomcat调试信息泄露的最佳实践
|
数据库 开发者
IntelliJ IDEA调试技巧:提升你的调试效率
调试是软件开发中不可或缺的一部分,而IntelliJ IDEA提供了一套强大的调试工具,可以帮助开发者更高效地定位和解决问题。本文将分享一些高手必会的IDEA调试技巧,让你在调试时如虎添翼。
437 0
|
IDE Java 开发工具
IntelliJ IDEA高效调试技巧:提升你的调试效率
在Java开发中,调试是开发过程中不可或缺的一部分。IntelliJ IDEA作为一款强大的IDE,提供了丰富的调试功能,帮助开发者更高效地定位和解决问题。本文将分享一些高手必会的IDEA调试技巧,让你的调试工作事半功倍。
378 0
IDEA之Stream表达式生成、调试
IDEA之Stream表达式生成、调试
705 1
|
Java 应用服务中间件 数据库
SSM使用IDEA整合视频及源码配置文件
SSM使用IDEA整合视频及源码配置文件
172 1
|
SQL 分布式计算 大数据
MaxCompute产品使用合集之如何在本地IDE(如IntelliJ IDEA)中配置MaxCompute (mc) 的任务和调试SQL
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。