IDEA运行Tomcat8源码

前言    

       Tomcat作为J2EE的开源实现,其代码具有很高的参考价值,我们可以从中汲取很多的知识。作为Java后端程序员,相信有很多人很想了解Tomcat的运行原理。Tomcat的构建是基于Ant和Eclipse的,然而现在很多人都喜欢IDEA+Maven的项目构建方式,本文描述了在Win7的环境下,使用IDEA导入Tomcat 8.0.53源码,并运行tomcat源码。

一、准备工作

  • Tomcat源码下载地址:http://mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.0.53/src/apache-tomcat-8.0.53-src.zip
  • IDEA工具:https://www.jetbrains.com/idea/download
  • MAVEN:http://maven.apache.org/download.cgi
  • JDK:自然不用多提了,但是要按照所选源码要求的版本,这里用的是JDK8

安装和下载这些软件包就可以开始搭建调试环境了。

二、项目结构   

IDEA运行Tomcat8源码_第1张图片

  • 将下载下来的apache-tomcat-8.0.53-src.zip解压,然后在解压后的apache-tomcat-8.0.53-src目录中新建catalina-home目录和pom.xml文件
  • apache-tomcat-8.0.53-src目录中的conf和webapps文件夹复制到catalina-home目录中

pom文件内容如下




    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.3
                
                    UTF-8
                    1.8
                    1.8
                
            
        
    

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

catalina-home目录结构如下

IDEA运行Tomcat8源码_第2张图片

lib文件夹是空的

至此基本的准备工作已经完成了

三、构建项目

  1. 将apache-tomcat-8.0.53-src项目导入进IDEA中
  2. 配置启动参数

IDEA运行Tomcat8源码_第3张图片

Main class设置为org.apache.catalina.startup.Bootstrap

添加VM options 

-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

说明:如果编译build的时候出现Test测试代码报错,注释该代码即可。本文中的Tomcat源码util.TestCookieFilter类会报错,将其注释即可。

四、启动项目

上面第三步已经构建了项目的运行环境,点击运行或者调试按钮后,正常运行。

IDEA运行Tomcat8源码_第4张图片

项目启动完毕我们可以测试了,在浏览器访问http://localhost:8080/  发现打不开我们看到的经典欢迎页面了,页面报了一个错

IDEA运行Tomcat8源码_第5张图片

原因是我们直接启动org.apache.catalina.startup.Bootstrap的时候没有加载org.apache.jasper.servlet.JasperInitializer,从而无法编译JSP。解决办法是在tomcat的源码org.apache.catalina.startup.ContextConfig中手动将JSP解析器初始化:

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

IDEA运行Tomcat8源码_第6张图片


修改完后,项目再启动,我们再在浏览器访问http://localhost:8080/ ,就可以看到我们所熟悉的经典欢迎页面了

IDEA运行Tomcat8源码_第7张图片

你可能感兴趣的:(IDEA运行Tomcat8源码)