tomcat源码调试配置

Tomcat源码调试配置
一、下载
Tomcat的构建是基于Ant和Eclipse的,然而现在很多人都喜欢IDEA+Maven的项目构建方式,所以本文将基于这个环境来搭建源码的调试。我们需要以下工具:
Tomcat源码下载地址:https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.23/src/apache-tomcat-8.5.23-src.tar.gz
IDEA工具:https://www.jetbrains.com/idea/download
MAVEN:http://maven.apache.org/download.cgi
JDK:自然不用多提了,但是要按照所选源码要求的版本,这里用的是JDK8
安装和下载这些软件包就可以开始搭建调试环境了。
二、项目结构

tomcat源码调试配置_第1张图片
新建一个目录,比如:code\tomcat8,然后将tomcat8的源码解压至该目录
新建catalina-home目录,然后将apache-tomcat-8.5.23-src目录下的 conf文件夹拷贝到此处,该目录结构如下
tomcat源码调试配置_第2张图片
除了conf目录其他都是可选的,webapps用于我们应用默认的部署目录,work logs是启动Tomcat自动生成的,其结构跟我们下载的二进制Tomcat程序是一样的.
配置Maven依赖
我们采用module的形式来组织目录,首先在根目录(D:\code\tomcat8)下创建pom.xml,其内容如下:

  
 
4.0.0
gxf    
apache-tomcat-8    
apache-tomcat-8-source    
1.0    
pom 
    
    apache-tomcat-8.5.33-src    
 

这里主要指定module为Tomcat的源码目录,然后在apache-tomcat-8.5.23-src配置Tomcat源码额外的依赖,在该目录创建pom.xml



4.0.0
org.apache.tomcat
Tomcat8.5.33
Tomcat8.5.33
8.5

    
    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  
        3.5  
        test  
      

        
        junit    
        junit    
        4.12  
        test    
        
        
        ant    
        ant    
        1.7.0    
        
        
        wsdl4j    
        wsdl4j    
        1.6.2    
        
        
        javax.xml    
        jaxrpc    
        1.1    
        
        
        org.eclipse.jdt.core.compiler    
        ecj    
        4.6.1  
        


三,准备构建
使用IDEA打开tomcat8下面的pom.xml

tomcat源码调试配置_第3张图片

配置编译环境
说明:首先如果出现这个错误:无效的源发行版:8,这是由于你的jdk版本不是用的1.7,可以参考这篇文章:无效的源发行版:8的解决方案(http://www.pianshen.com/article/1716352227/)如果编译build的时候出现Test测试代码报错,删除该代码即可。本文中的Tomcat源码util.TestCookieFilter类会报错,将其删除即可。
可以把Test目录删除

-Dcatalina.home=catalina-home
-Dcatalina.base=catalina-home
-Djava.endorsed.dirs=catalina-home/endorsed
-Djava.io.tmpdir=catalina-home/temp
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
-Djava.util.logging.config.file=catalina-home/conf/logging.properties
tomcat源码调试配置_第4张图片
HTTP://127.0.0.1:8080/
此时前端会报错,原因是我们直接启动org.apache.catalina.startup.Bootstrap的时候没有加载org.apache.jasper.servlet.JasperInitializer,从而无法编译JSP。这在Tomcat6/7是没有这个问题的。解决办法是在tomcat的源码org.apache.catalina.startup.ContextConfig中手动将JSP解析器初始化:
在webconfig()后边加上图片中这一段即可。
tomcat源码调试配置_第5张图片

然后重启再次访问就会出tomcat的首页了。

你可能感兴趣的:(学习)