Tomcat源码分析

Posted Peter Jones

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Tomcat源码分析相关的知识,希望对你有一定的参考价值。

Tomcat架构

 

连接器 Coyote

 

 

 Catalina容器

 

 

 

 

 

 源码分析

 

 

Tomcat源码分析启动Tomcat源码

一、Tomcat简介

Tomcat 服务器是一个免费的开放源代码的Web 应用服务器。

二、下载源码

进入tomcat官网

点击左侧导航栏的Tomcat8。然后下载源码

三、Idea启动源码

tomcat使用的是ant,大家一般都是对maven比较熟悉,所以先将ant项目转换成maven项目。

1.转换成maven项目

直接在项目下新建一个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>org.apache.tomcat</groupId>
  <artifactId>Tomcat8.5</artifactId>
  <name>Tomcat8.5</name>
  <version>8.5</version>

  <build>
    <finalName>Tomcat8.5</finalName>
    <sourceDirectory>java</sourceDirectory>
    <testSourceDirectory>test</testSourceDirectory>
    <resources>
      <resource>
        <directory>java</directory>
      </resource>
    </resources>

    <testResources>
      <testResource>
        <directory>test</directory>
      </testResource>
    </testResources>

    <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>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.easymock</groupId>
      <artifactId>easymock</artifactId>
      <version>3.6</version>
    </dependency>

    <dependency>
      <groupId>ant</groupId>
      <artifactId>ant</artifactId>
      <version>1.7.0</version>
    </dependency>

    <dependency>
      <groupId>wsdl4j</groupId>
      <artifactId>wsdl4j</artifactId>
      <version>1.6.2</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/javax.xml/jaxrpc -->
    <dependency>
      <groupId>javax.xml</groupId>
      <artifactId>jaxrpc</artifactId>
      <version>1.1</version>
    </dependency>

    <dependency>
      <groupId>org.eclipse.jdt.core.compiler</groupId>
      <artifactId>ecj</artifactId>
      <version>4.5.1</version>
    </dependency>
  </dependencies>

</project>

2. idea导入项目,设置Application。

启动类是 org.apache.catalina.startup.Bootstrap。
vm参数是 -Duser.language=en -Duser.region=US -Dfile.encoding=UTF-8,这几个参数是为了解决控制台输出乱码。

3. 删除test、webapps/example。

因为这两个文件夹里缺少几个java文件,会编译不通过。或者,你也可以手动删除报错的java文件。

4. 添加jsp解析器。

找到ContextConfig文件,在 configureStart方法中添加一句代码
context.addServletContainerInitializer(new JasperInitializer(), null);

5. 启动项目

查看控制台有没有报错信息,有就自己复制错误信息去百度。

现在打开浏览器访问 http://localhost:8080/

熟悉的页面出来了,启动源码成功!!!

在阅读源码之前,请先了解web服务器(Tomcat源码分析 (一)----- 手写一个web服务器),tomcat架构(Tomcat源码分析 (二)----- Tomcat整体架构及组件),生命周期(Tomcat源码分析 (三)----- 生命周期机制 Lifecycle)的概念,

以上是关于Tomcat源码分析的主要内容,如果未能解决你的问题,请参考以下文章

TOMCAT源码分析(启动框架)

Tomcat源码分析——server.xml文件的加载与解析

Tomcat卷一 ----架构和初始化源码分析

Tomcat之NIO架构源码分析

[Tomcat源码分析] Eclipse中搭建Apache Tomcat源码调试环境

Tomcat源码分析