Tomcat 8.5源码 IDEA打开方式

环境

macos操作系统
idea 2020版本
apache-tomcat-8.5版本

步骤

  • 下载tomcat 8.5
    image.png


1.解压。
2.手动添加文件夹catalina-home,将conf、webapps两个文件夹复制进来,并且新建lib、logs、temp、work四个空文件夹。
3.添加pom.xml文件。




    4.0.0
    org.apache.tomcat
    Tomcat8
    Tomcat8
    8

    
        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
        
        
            javax.xml.soap
            javax.xml.soap-api
            1.4.0
        

    

和下面两张图结构一致即可。

image.png
image.png
  • 用IDEA打开
    在pom.xml鼠标右击选择as maven project,module构建完毕以后,java目录会变色的。


    image.png


  • 通过org.apache.catalina.startup.Bootstrap中的main方法启动。
    我们在IDEA中配置Application方式启动,附带启动参数。


    image.png

启动参数如下:

-Dcatalina.home/Users/niezhengyu/Downloads/apache-tomcat-8.5.55-src/catalina-home
-Dcatalina.base=/Users/niezhengyu/Downloads/apache-tomcat-8.5.55-src/catalina-home
-Djava.endorsed.dirs=/Users/niezhengyu/Downloads/apache-tomcat-8.5.55-src/catalina-home/endorsed
-Djava.io.tmpdir=/Users/niezhengyu/Downloads/apache-tomcat-8.5.55-src/catalina-home/temp
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
-Djava.util.logging.config.file=/Users/niezhengyu/Downloads/apache-tomcat-8.5.55-src/catalina-home/conf/logging.properties`

路径前缀自行修改即可。
然后我们加一行代码到源码中,手动初始化jsp解析器。
在configureStart类configureStart方法中。
在webConfig()后添加

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

参考下图注释jsp的地方。

 protected synchronized void configureStart() {
        // Called from StandardContext.start()

        if (log.isDebugEnabled()) {
            log.debug(sm.getString("contextConfig.start"));
        }

        if (log.isDebugEnabled()) {
            log.debug(sm.getString("contextConfig.xmlSettings",
                    context.getName(),
                    Boolean.valueOf(context.getXmlValidation()),
                    Boolean.valueOf(context.getXmlNamespaceAware())));
        }


        webConfig();
        // jsp 
        context.addServletContainerInitializer(new JasperInitializer(), null);

        if (!context.getIgnoreAnnotations()) {
            applicationAnnotationsConfig();
        }
        if (ok) {
            validateSecurityRoles();
        }

        // Configure an authenticator if we need one
        if (ok) {
            authenticatorConfig();
        }

        // Dump the contents of this pipeline if requested
        if (log.isDebugEnabled()) {
            log.debug("Pipeline Configuration:");
            Pipeline pipeline = context.getPipeline();
            Valve valves[] = null;
            if (pipeline != null) {
                valves = pipeline.getValves();
            }
            if (valves != null) {
                for (Valve valve : valves) {
                    log.debug("  " + valve.getClass().getName());
                }
            }
            log.debug("======================");
        }

        // Make our application available if no problems were encountered
        if (ok) {
            context.setConfigured(true);
        } else {
            log.error(sm.getString("contextConfig.unavailable"));
            context.setConfigured(false);
        }

    }

然后启动项目,输入localhost:8080即可。


image.png

你可能感兴趣的:(Tomcat 8.5源码 IDEA打开方式)