赞
踩
Tomcat 服务器是一个开源的轻量级Web应用服务器,在中小型系统和并发量小的场合下被普遍使用,是开发和调试Servlet、JSP 程序的首选。
几乎所有Java程序员初期都会使用它,今天我们就带着大家深入Tomcat底层原理。
除了tomcat服务器,我们还可以使用其他的web服务器,那常见还还有以下这些:
历史沿革
好吧,这tomcat的发展历史,大家伙稍微看一下即可。
来吧,我们直接去tomcat官网下载一个tomcat服务器吧:下载地址
点击下载即可。
启动(解压下载下来的zip压缩包)
window下,直接双击startup.bat启动
- bin/startup.bat
- 复制代码
停止 window下,shutdown.bat启动
- bin/shutdown.bat
- 复制代码
解压下,我们可以看下以下的目录结构:
目录 | 目录下文件 | 说明 |
---|---|---|
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.properties | Tomcat 的环境变量配置 | |
catalina.policy | Tomcat 运行的安全策略配置 | |
logging.properties | Tomcat 的日志配置文件, 可以通过该文件修改Tomcat 的日志级别及日志路径等 | |
server.xml | Tomcat 服务器的核心配置文件 | |
tomcat-users.xml | 定义Tomcat默认的用户及角色映射信息配置 | |
web.xml | Tomcat 中所有应用默认的部署描述文件,^ 主要定义了基础Servlet和MIME映射。 | |
lib | / | Tomcat 服务器的依赖包 |
logs | / | Tomcat 默认的日志存放目录 |
webapps | / | Tomcat 默认的Web应用部署目录 |
work | / | Web 应用JSP代码生成和编译的临时目录 |
好了,以上就是tomcat的目录结构说明了。
那我们今天的主要是对tomcat的源码进行构建,这里我们使用idea工具进行tomcat源码构建。
这里我们先下载好tomcat的源码,tomcat版本:8.5.81
1. 解压源码zip压缩包
2. 进入解压目录,并创建文件夹,命名为home 。 并将conf、webapps目录移入home 目录中
3.这里还需拷贝lib目录,到home文件夹里面
这里的lib目录,可以用上面我们下载好的tomcat服务器的lib文件夹
4. 在当前目录下创建一个 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">
- <modelVersion>4.0.0</modelVersion>
- <groupId>org.apache.tomcat</groupId>
- <artifactId>apache-tomcat-8.5.81-src</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.2</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.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>
- </dependencies>
- </project>
- 复制代码
5. 导入工程到idea
导入到idea中,并进行maven构建。
6. 配置主函数启动类 ,并配置 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
- 复制代码
7. 启动Tomcat 源码主方法, 运行访问
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。