TOMCAT 源码分析 – 构建环境
构建源码
下载官方源码
进入TOMCAT官网下载TOMCAT 9源码
注意要下载Source Code Distributions下的压缩包才是源码
这里我下载到的版本是apache-tomcat-9.0.35-src.zip
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>com.wanglh</groupId> <artifactId>Tomcat9.0</artifactId> <name>Tomcat9</name> <version>9.0</version> <build> <finalName>Tomcat9</finalName> <sourceDirectory>java</sourceDirectory> <resources> <resource> <directory>java</directory> </resource> </resources> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.3</version> <configuration> <encoding>UTF-8</encoding> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </build> <dependencies> <dependency> <groupId>org.apache.ant</groupId> <artifactId>ant</artifactId> <version>1.9.5</version> </dependency> <dependency> <groupId>org.apache.ant</groupId> <artifactId>ant-apache-log4j</artifactId> <version>1.9.5</version> </dependency> <dependency> <groupId>org.apache.ant</groupId> <artifactId>ant-commons-logging</artifactId> <version>1.9.5</version> </dependency> <dependency> <groupId>javax.xml.rpc</groupId> <artifactId>javax.xml.rpc-api</artifactId> <version>1.1</version> </dependency> <dependency> <groupId>wsdl4j</groupId> <artifactId>wsdl4j</artifactId> <version>1.6.2</version> </dependency> <dependency> <groupId>org.eclipse.jdt.core.compiler</groupId> <artifactId>ecj</artifactId> <version>4.4</version> </dependency> </dependencies> </project>
去掉无用报错代码
有些代码版本正确也没用,点运行会编译错误,将它注释掉就好(有两段)
// JDTCompiler.java // Version format changed from Java 9 onwards. // Support old format that was used in EA implementation as well // 屏蔽以下几个不能识别的版本 // } else if(opt.equals("9") || opt.equals("1.9")) { // settings.put(CompilerOptions.OPTION_TargetPlatform, // CompilerOptions.VERSION_9); // settings.put(CompilerOptions.OPTION_Compliance, // CompilerOptions.VERSION_9); // } else if(opt.equals("10")) { // settings.put(CompilerOptions.OPTION_TargetPlatform, // CompilerOptions.VERSION_10); // settings.put(CompilerOptions.OPTION_Compliance, // CompilerOptions.VERSION_10); // } else if(opt.equals("11")) { // settings.put(CompilerOptions.OPTION_TargetPlatform, // CompilerOptions.VERSION_11); // settings.put(CompilerOptions.OPTION_Compliance, // CompilerOptions.VERSION_11); // } else if(opt.equals("12")) { // settings.put(CompilerOptions.OPTION_TargetPlatform, // CompilerOptions.VERSION_12); // settings.put(CompilerOptions.OPTION_Compliance, // CompilerOptions.VERSION_12);
运行路径
在工程中新建 home(或者其他路径),将conf/ webapps/ 拷贝进去 (工程中已经拷贝)
运行后,会在这个目录下生成logs、work文件夹。
JAVA环境
需要JDK 1.8的环境
启动类
org.apache.catalina.startup.Bootstrap作为启动类
jvm 运行时参数
启动时需要指定catalina的一些运行时参数,具体路径需要自己修改
-Dcatalina.home=F:\tomcat9Src\apache-tomcat-9.0.35-src\home -Dcatalina.base=F:\tomcat9Src\apache-tomcat-9.0.35-src\home -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file=F:\tomcat9Src\apache-tomcat-9.0.35-src\conf\logging.properties -Dfile.encoding=UTF8 -Dsun.jnu.encoding=UTF8
运行
点击运行后访问本地8080端口: http://localhost:8080/ 就可以看到TOMCAT界面了。
结语
欢迎直接fork本工程,已经完成删除无用代码,并且有添加中文注释、中文日志。