简单介绍
Tomcat是Apache 软件基金会(Apache Software Foundation)的一个项目,是开源的轻量级Web应用服务器,使用非常广泛,是开发和调试JSP 程序的首选。
环境搭建
-
源码下载
-
maven配置
在apache-tomcat-9.0.8-src目录下新建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>cn.linxdcn</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>
<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>
<scope>test</scope>
</dependency>
</dependencies>
</project>
也可以按照官网使用ant构建,但是个人比较懒,还是用maven比较方便。
-
修改源码
注意Tomcat9版本中有部分代码包含CompilerOptions.VERSION_9-11,如果机器不支持需要删除
-
删除webapps
为了方便跑起来,否则话需要修改很多
-
导入IDEA,并配置启动
导入IDEA,配置启动类Bootstrap,配置VMOption:-Dcatalina.home="${apache-tomcat-9.0.19-src}"
这里 ${apache-tomcat-9.0.19-src} 为本地源码路径
-
编译并运行
maven成功编译后即可运行
目录结构
-
conf文件夹
catalina.policy:当Tomcat在安全模式下运行,此文件为默认的安全策略配置。
catalina.properties:catalina环境变量配置。
context.xml:用于定义所有Web应用均需要加载的Context配置,如果Web应用指定了自己的context.xml,那么该文件的配置会被覆盖。
logging.properties:日志配置文件,可修改日志级别和日志路径等。
server.xml:核心配置文件,用于配置链接器、监听端口、处理请求的虚拟主机等,tomcat根据该配置文件创建服务器实例,详细介绍参考下面。
tomcat-users.xml:tomcat配置用户的文件,用于定义tomcat默认用户及角色映射信息,tomcat的manage模块使用该文件中定义的用户进行安全认证。
web.xml:tomcat中所有应用默认的部署描述文件,主要定义了基础Servlet和MIME映射,tomcat会将默认部署描述与自定义配置进行合并
-
server.xml属性介绍
-
Server结构图
-
Tomcat顶层结构图
Server是Tomcat的最顶层元素,是service的集合,即可包含多个service,Server控制整个Tomcat的生命周期。
Service由一个Container和多个Connector组成,形成一个独立完整的处理单元,对外提供服务。
Connector用于处理连接相关的事情,并提供Socket与request、response的转换。
Container用与封装和管理Servlet,以及具体处理request请求。Tomcat将Engine,Host,Context,Wrapper统一抽象成Container。