@w1992wishes
        
        2018-01-31T01:54:57.000000Z
        字数 3960
        阅读 1454
    源码分析 tomcat
两句话简单介绍下:
Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。
它是一个小型的轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。
tomcat的下载安装有很多教程,不再赘述。
现在的tomcat已经到9了,当tomcat下载安装完成后,其目录大致如下:

除了上面的文件夹,还有四个文件:

先介绍后4个文件:
再介绍文件夹(并不全):
bin文件夹下面放的是可执行性文件,其中:bat/exe文件是Windows下可执行的脚本文件。sh文件时Linux/Unix下可执行的脚本文件。
存放tomcat服务器的配置文件。
server.xml文件重点关注一下:

里面详细配置可以参考这篇文章: 
server.xml配置详解
tomcat依赖库目录,包含tomcat服务器运行环境依赖jar包。
默认的日志存放文件夹。
默认的web应用部署目录。
web应用jsp代码生成和编译临时目录。清空work目录,然后重启tomcat,可以达到清除缓存的作用。sp文件在被翻译后,保存在当前这个目录下,session对象被序列化之后保存的位置。
前面对tomcat做了一些简单的认识,下面将tomcat源码调试环境搭建起来。
可以参考官网的搭建方法,这里是按照网上的maven管理的方式搭建。
大概步骤是:
1.下载tomcat 9的源码,一般是下载页面最底部的tar包或zip包源码;
2.然后解压在文件夹下新建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>me.w1992wishes.tomcatwork</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>
3.接着导入idea,设置启动项:
Main Class:org.apache.catalina.startup.Bootstrap; 
VM options:填写解压的tomcat路径;

4.因为webapps下的应用有些配置加载出错,可以先将webapps里面的文件全部删除,自己新建一个demo文件夹,然后在里面新建一个index.html,并不影响源码阅读。
5.JDTCompiler.java类中可能会有报错,有部分代码使用CompilerOptions.VERSION_1_9来判断java虚拟机版本,里面涉及1.9版本的jvm,如果识别不了,可以删掉。
6.最后编译,运行,访问localhost:8080/demo。
详过程可以参考这篇博文: