Tomcat原理剖析-tomcat介绍和源码idea构建

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: Tomcat 服务器是一个开源的轻量级Web应用服务器,在中小型系统和并发量小的场合下被普遍使用,是开发和调试Servlet、JSP 程序的首选。几乎所有Java程序员初期都会使用它,今天我们就带着大家深入Tomcat底层原理。

一、Tomcat 介绍
1.1 什么是Tomcat
Tomcat 服务器是一个开源的轻量级Web应用服务器,在中小型系统和并发量小的场合下被普遍使用,是开发和调试Servlet、JSP 程序的首选。
几乎所有Java程序员初期都会使用它,今天我们就带着大家深入Tomcat底层原理。
除了tomcat服务器,我们还可以使用其他的web服务器,那常见还还有以下这些:

Undertow:是一个采用 Java 开发的灵活的高性能 Web 服务器,提供包括阻塞和基于 NIO 的非堵塞机制。
JBoss:JBoss公司的,大型的JavaEE服务器,支持所有的JavaEE规范,收费的。
WebLogic:Oracle公司,大型的JavaEE服务器,支持所有的JavaEE规范,收费的。
WebSphere:IBM公司,大型的JavaEE服务器,支持所有的JavaEE规范,收费的。

历史沿革

Tomcat 最初由Sun公司的软件架构师 James Duncan Davidson 开发,名称为 “JavaWebServer”。
1999年,在 Davidson 的帮助下,该项目于 1999 年于apache 软件基金会旗下的 JServ 项目合并,
并发布第一个版本(3.x), 即是现在的Tomcat,该版本实现了Servlet2.2 和 JSP 1.1 规范 。
2001年,发布4.0版本,作为里程碑式的版本,Tomcat 完全重新设计了其架构,并实现了 Servlet
2.3 和 JSP1.2规范。
2003年,发布5.0版本,实现 Servlet 2.4 和 JSP2.0规范。
2007年,发布6.0版本,实现 Servlet 2.5 、JSP2.1 规范。支持EL1.1规范。
2011年,发布7.0版本,实现 Servlet 3.0 和 JSP2.2规范。支持EL2.2规范。加入了WebSocket规
范。
2014年,发布8.0版本,实现 Servlet 3.1 和 JSP2.3规范。支持EL3.0规范。
2016年,发布8.5版本,实现 Servlet 3.1 和 JSP2.3规范。支持HTTP/2,OpenSSL,TLS虚拟主机
和JASPIC1.1。
2018年,发布9.0版本,实现 Servlet 4.0 规范。
目前 Tomcat 已经更新到 10.0.x版本 , 但是目前企业中的Tomcat服务器, 主流版本是8.5 , 所以
本课程是基于 8.5 版本进行讲解。

好吧,这tomcat的发展历史,大家伙稍微看一下即可。

来吧,我们直接去tomcat官网下载一个tomcat服务器吧:下载地址

点击下载即可。

启动(解压下载下来的zip压缩包)
window下,直接双击startup.bat启动
bin/startup.bat
复制代码
停止
window下,shutdown.bat启动
bin/shutdown.bat
复制代码
1.2 目录结构介绍
解压下,我们可以看下以下的目录结构:

对于这些目录结构,我们来做个说明:

目录目录下文件说明bin/存放Tomcat的启动、停止等批处理脚本文件startup.bat, startup.sh用于在windows和linux下的启动脚本shutdown.bat, shutdown.sh用于在windows和linux下的停止脚本conf/用于存放Tomcat的相关配置文件Catalina用于存储针对每个虚拟机的Context配置context.xml用于定义所有web应用均需加载的Context配置,如果web应用指定了自己的context.xml ,该文件将被覆盖catalina.propertiesTomcat 的环境变量配置catalina.policyTomcat 运行的安全策略配置logging.propertiesTomcat 的日志配置文件, 可以通过该文件修改Tomcat 的日志级别及日志路径等server.xmlTomcat 服务器的核心配置文件tomcat-users.xml定义Tomcat默认的用户及角色映射信息配置web.xmlTomcat 中所有应用默认的部署描述文件,^ 主要定义了基础Servlet和MIME映射。lib/Tomcat 服务器的依赖包logs/Tomcat 默认的日志存放目录webapps/Tomcat 默认的Web应用部署目录work/Web 应用JSP代码生成和编译的临时目录

好了,以上就是tomcat的目录结构说明了。

那我们今天的主要是对tomcat的源码进行构建,这里我们使用idea工具进行tomcat源码构建。
1.3 Tomcat源码学习环境搭建
这里我们先下载好tomcat的源码,tomcat版本:8.5.81
1、源码下载
下载地址

2、源码idea工程搭建

搭建步骤:

  1. 解压源码zip压缩包
  2. 进入解压目录,并创建文件夹,命名为home 。 并将conf、webapps目录移入home 目录中

3.这里还需拷贝lib目录,到home文件夹里面

这里的lib目录,可以用上面我们下载好的tomcat服务器的lib文件夹

  1. 在当前目录下创建一个 pom.xml 文件,引入tomcat相关的依赖

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">

4.0.0
org.apache.tomcat
apache-tomcat-8.5.81-src
Tomcat8.5
8.5

<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.2</version>
    <configuration>
      <encoding>UTF-8</encoding>
      <source>1.8</source>
      <target>1.8</target>
    </configuration>
  </plugin>
</plugins>


<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.4</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>
<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>



复制代码

  1. 导入工程到idea

导入到idea中,并进行maven构建。

  1. 配置主函数启动类 ,并配置 VM 参数

这里的vm参数,贴一下喽:
-Dcatalina.home=D:/mywork/tomcat/apache-tomcat-8.5.81-src/home
-Dcatalina.base=D:/mywork/tomcat/apache-tomcat-8.5.81-src/home
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
-Djava.util.logging.config.file=D:/mywork/tomcat/apache-tomcat-8.5.81-src/home/conf/logging.properties
复制代码

  1. 启动Tomcat 源码主方法, 运行访问
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
4月前
|
监控 网络协议 Java
Tomcat源码解析】整体架构组成及核心组件
Tomcat,原名Catalina,是一款优雅轻盈的Web服务器,自4.x版本起扩展了JSP、EL等功能,超越了单纯的Servlet容器范畴。Servlet是Sun公司为Java编程Web应用制定的规范,Tomcat作为Servlet容器,负责构建Request与Response对象,并执行业务逻辑。
Tomcat源码解析】整体架构组成及核心组件
|
5月前
|
Java Maven
idea构建grpc项目
idea构建grpc项目
108 0
|
6月前
|
Java 应用服务中间件 Maven
IDEA创建一个Servlet项目(tomcat10)
IDEA创建一个Servlet项目(tomcat10)
281 1
|
2月前
|
前端开发 Java 应用服务中间件
21张图解析Tomcat运行原理与架构全貌
【10月更文挑战第2天】本文通过21张图详细解析了Tomcat的运行原理与架构。Tomcat作为Java Web开发中最流行的Web服务器之一,其架构设计精妙。文章首先介绍了Tomcat的基本组件:Connector(连接器)负责网络通信,Container(容器)处理业务逻辑。连接器内部包括EndPoint、Processor和Adapter等组件,分别处理通信、协议解析和请求封装。容器采用多级结构(Engine、Host、Context、Wrapper),并通过Mapper组件进行请求路由。文章还探讨了Tomcat的生命周期管理、启动与停止机制,并通过源码分析展示了请求处理流程。
|
2月前
|
负载均衡 应用服务中间件 Apache
Tomcat负载均衡原理详解及配置Apache2.2.22+Tomcat7
Tomcat负载均衡原理详解及配置Apache2.2.22+Tomcat7
44 3
|
2月前
|
Java 应用服务中间件 Maven
idea+maven+tomcat+spring 创建一个jsp项目
这篇文章介绍了如何在IntelliJ IDEA中使用Maven和Tomcat创建一个JSP项目,包括配置Maven依赖、设置Tomcat服务器、编写JSP页面、创建控制器和配置文件,以及项目的运行结果。
202 0
idea+maven+tomcat+spring 创建一个jsp项目
|
4月前
|
前端开发 JavaScript Java
idea中如何不重启tomcat 即可看到修改内容变化
这篇文章介绍了在IntelliJ IDEA中实现对Java Web应用的热部署(Hot Swap)的多种方法,包括启用自动构建、使用Exploded Artifact、安装JRebel插件、更改静态资源、使用Spring Boot的devtools以及IDEA的HotSwap功能,以便在不重启Tomcat服务器的情况下看到修改内容的变化。
idea中如何不重启tomcat 即可看到修改内容变化
|
4月前
|
Java 应用服务中间件 Apache
使用IDEA修改Web项目访问路径,以及解决Apache Tomcat控制台中文乱码问题
本文介绍了在IntelliJ IDEA中修改Web项目访问路径的步骤,包括修改项目、模块、Artifacts的配置,编辑Tomcat服务器设置,以及解决Apache Tomcat控制台中文乱码问题的方法。
238 0
使用IDEA修改Web项目访问路径,以及解决Apache Tomcat控制台中文乱码问题
|
5月前
|
Java 应用服务中间件 Shell
|
5月前
|
应用服务中间件
入职必会-开发环境搭建23-IDEA配置Tomcat
IDEA配置Tomcat分为两部分: 1. IDEA集成本地Tomcat 2. IDEA中使用Tomcat部署Web项目 在配置IntelliJ IDEA中的Tomcat时,首先需要打开IDEA,选择菜单中的Run -> Edit Configurations,在左侧菜单中找到+并点击,然后选择Tomcat Server下的Local(注意不要选择错了,下方还有个TomEE Server,不是选这个)。接下来,输入一个自定义的名字作为Tomcat的配置名称,点击Configure...配置Tomcat的安装路径。这样IDEA就配置好了Tomcat。