• idea导入tomcat8源码搭建源码调试环境


    从apache tomcat下载tomcat8源码

    1.下载到源码后,tomcat默认使用ant作为包管理工具,本地调试时创建pom.xml, 手动创建一个pom.xml放入源码根目录

    "1.0" encoding="UTF-8"?>    
    "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.0.0    
        org.apache.tomcat    
        Tomcat8.0    
        Tomcat8.0    
        8.0    
        
            
            Tomcat8.0    
            java    
            test    
                
                    
                    java    
                    
                
                
                    
                    test    
                    
                
                
                    
                    org.apache.maven.plugins    
                    maven-compiler-plugin    
                    2.0.2    
        
                        
                        UTF-8    
                        1.8    
                        1.8    
                        
                    
                
        
    
        
          
           org.easymock
           easymock
           5.0.0
           test
          
        
          com.unboundid
          unboundid-ldapsdk
          6.0.4
          test
        
            
                ant
                ant
                1.7.0
            
            
                ant
                ant-apache-log4j
                1.6.5
            
            
                ant
                ant-commons-logging
                1.6.5
            
            
                wsdl4j
                wsdl4j
                1.6.2
            
            
                javax.xml.rpc
                javax.xml.rpc-api
                1.1
            
            
                org.eclipse.jdt.core.compiler
                ecj
                4.6.1
            
            
                junit
                junit
                4.12
                test
            
        
    
    
    

    2.使用idea导入tomcat源码 File->Project from Existing Sources -> Maven import
    重新导入依赖后TestCookieFilter会报错,本地注释掉单元测试类即可。
    3.编辑配置文件, Edit Configuration, 如下图。
    设置catalina.home和tomcat启动类Bootstrap, jdk我选择的是1.8
    QQ截图20230222103134.png
    4.Maven Reload, 把依赖的包重新导入进来。
    QQ截图20230222103526.png

    添加JSP解析器代码:

    1.Servlet.service() for servlet [jsp] in context with path [] threw exception [org.apache.jasper.JasperException: Unable to compile class for JSP] with root cause

    解决方案:编辑 org.apache.catalina.startup.ContextConfig 文件的 configureStart() 方法,添加初始化 JSP 解析器的代码:

    在ContextConfig类的configStart方法中加入以下代码

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

    QQ截图20230221142355.png

    我本地下载的tomcat8源码, 以上工作准备完后,直接编译,单元测试也没报错。运行起来,就可以看到猫咪了, 可以开心的看源码了。
    QQ截图20230222110548.png
    我本地的源码config/server.xml里配置的是8080端口, 这里就跑起来了。
    QQ截图20230222110634.png

    tomcat源码目录结构

    QQ截图20230222104543.png

    tomcat核心源码

    QQ截图20230222110824.png

    CATALINA_HOME和CATALINA_BASE

    开始阅读tomcat源码之前,先浏览一遍tomcat官方写的介绍,里面内容很全,也是我们学习的第一手资料,这里涉及到两个变量CATALINA_HOME和CATALINA_BASE。

    • CATALINA_HOME:表示 Tomcat 安装的根目录,即D:\Gitee\tomcat8\apache-tomcat-8.5.85-src
    • CATALINA_BASE:表示特定 Tomcat 实例的运行时配置的根。如果你需要在一台机器上配置多个tomcat实例,则需要用到catalina_base变量

    为什么使用CATALINA_BASE

    默认情况下,CATALINA_HOME和CATALINA_BASE指向同一目录。当您需要在一台计算机上运行多个 Tomcat 实例时,手动设置CATALINA_BASE。这样做具有以下优点:

    • 更轻松地管理升级到较新版本的 Tomcat。由于具有单个CATALINA_HOME位置的所有实例共享一组文件和二进制文件,因此您可以轻松地将文件升级到较新版本,并将更改传播到使用同一CATALIA_HOME目录的所有 Tomcat 实例。
    • 避免重复相同的bin、lib文件夹的文件。
    • 共享某些设置的可能性,例如 shell 或 bat 脚本文件(取决于您的操作系统)。

    参考资料

    https://2i3i.com/tomcat-code-7.html

  • 相关阅读:
    工具篇 | 基于SpringBoot的H2数据库入门实战
    Java开发学习---Maven私服(二)本地仓库访问私服配置与私服资源上传下载
    数据可视化高级技术(Echarts)
    课设总结【硬件课设】
    vue-router4之导航守卫
    实现统计本周每天的数量
    flowable接口整理
    复现XSS漏洞及分析
    Unity之NetCode多人网络游戏联机对战教程(5)--ConnectionData与MemoryPack
    STM32cubemx对FreeRTOS的适配(工程模板配置)
  • 原文地址:https://www.cnblogs.com/sword-successful/p/17162800.html