Tomcat 是 Apache Software Foundation 旗下的一个开源项目,遵循 Apache License 2.0 许可协议。
它是一个 Java Web 容器,实现了多个 Java EE 规范,包括 Java Servlet, JavaServer Pages (JSP), Java EL,和 WebSocket,并且提供了一个纯 Java 的 Http Web 服务器环境。
发展
Tomcat 项目开始于1998年11月,由 Sun Microsystems 的软件架构师 James Duncan Davidson 主持开发。
第一个发布版本是 Tomcat 3.0,于1999年发布,实现了 Servlet 2.2 规范和 JSP 1.1 规范。
目前 Tomcat 最新版本是 Tomcat 9,同时还在维护的是 Tomcat 7、8,而已经停止维护的是 Tomcat 3、4、5、6,我们选择的时候应尽量选择官方尚在支持的版本。
这张表摘录自维基百科(截至2018年5月15日):
Series | Declared stable | Description | Latest release | Latest release date |
---|---|---|---|---|
2.0 | Tomcat started off in November 1998 as a servlet reference implementation by James Duncan Davidson, a software architect at Sun Microsystems. | |||
3.0 | 1999 | Initial release. Merger of donated Sun Java Web Server code and ASF and Implements Servlet 2.2, and JSP 1.1 specifications. | 3.3.2 | 2004-03-09 |
4.1 | 2002-09-06 | First Apache Tomcat release to support the Servlet 2.3 and JSP 1.2 specifications. | 4.1.40 | 2009-06-25 |
5.0 | 2003-12-03 | First Apache Tomcat release to support the Servlet 2.4, JSP 2.0, and EL 1.1 specifications. | 5.0.30 | 2004-08-30 |
5.5 | 2004-11-10 | Designed for J2SE 5.0. Inclusion of Eclipse JDT allows Tomcat to run without a full Java Development Kit being installed. | 5.5.36 | 2012-10-10 |
6.0 | 2007-02-28 | First Apache Tomcat release to support the Servlet 2.5, JSP 2.1, and EL 2.1 specifications. | 6.0.53 | 2017-04-07 |
7.0 | 2011-01-14 | First Apache Tomcat release to support the Servlet 3.0, JSP 2.2, EL 2.2, and WebSocket specifications. | 7.0.88 | 2018-05-11 |
8.0 | 2014-06-25 | First Apache Tomcat release to support the Servlet 3.1, JSP 2.3, and EL 3.0 specifications. | 8.0.52 | 2018-05-08 |
8.5 | 2016-06-13 | Adds support for HTTP/2, OpenSSL for JSSE, TLS virtual hosting and JASPIC 1.1. Created from Tomcat 9, following delays to Java EE 8. | 8.5.31 | 2018-05-03 |
9.0 | 2018-01-18 | First Apache Tomcat release to support the Servlet 4.0, JSP 2.4 (TBD), and EL 3.1 (TBD) specifications. | 9.0.8 | 2018-05-03 |
目录结构
Tomcat 的目录十分简洁,安装目录下的文件结构如下:
apache-tomcat-9.0.8
├─ bin
├─ conf
├─ lib
├─ logs
├─ temp
├─ webapps
├─ work
├─ LICENSE
├─ NOTICE
├─ RELEASE-NOTES
└─ RUNNING.txt
目录详解
bin 文件夹
bin 文件夹用于存放 Tomcat 的一些命令文件。
以.bat
作为后缀名的是 Windows 下的命令,以.sh
作为后缀名的是 Linux 下的命令。
最常用的有以下这些:
startup.bat
/startup.sh
:启动 Tomcat;shutdown.bat
/shutdown.sh
:关闭 Tomcat;configtest.bat
/configtest.sh
:Tomcat 的配置测试脚本;version.bat
/version.sh
:查看 Tomcat 版本信息、本机操作系统版本信息以及 Java 环境信息。
其实这几个命令都是 catalina.bat 命令的封装:
startup.bat
相当于 catalina.bat startshutdown.bat
相当于 catalina.bat stopversion.bat
相当于 catalina.bat versionconfigtest.bat
相当于 catalina.bat configtest
catalina.bat
/ catalina.sh
命令可以看成一个总的命令集,bin 目录下的很多命令都是对 catalina 命令的封装,以便于快速调用。
ciphers.bat
/ ciphers.sh
命令最终指向:
org.apache.tomcat.util.net.openssl.ciphers.OpenSSLCipherConfigurationParser
用于显示一个可以通过 OpenSSL 来解析的密码类型的列表。
daemon.sh
命令只在 Linux 环境下使用,用于创建一个守护进程防止 Tomcat 被用户、中断等变化而影响(为 Tomcat 创建一个后台进程。目前 Linux 学的比较少,日后再补充)。
digest.bat
/ digest.sh
命令使用指定算法对明文进行加密,最简单的用法就是:
digest.bat -a MD5 -e UTF-8 -s 0 Ving
Ving:78d465a6d789c62848c68797fd61a83f
service.bat
命令只在 Windows 环境下使用,用于安装 Tomcat 服务,实现开机自动启动 Tomcat 服务。
setclasspath.bat
/ setclasspath.sh
命令用于寻找、检查 JAVA_HOME 和 JRE_HOME 这两个系统环境变量。
tomcat9.exe
是在 Tomcat 安装版中提供的一个启动 Tomcat 的应用,功能与 start.bat
命令相同,不同之处在于 tomcat9.exe
必须先安装 Tomcat 服务。
tomcat9w.exe
是一个可视化的 Tomcat 应用工具,包括设置环境变量、启动、停止等等功能,并且可以设置参数,但是必须先安装 Tomcat 服务。
tool-wrapper.bat
/ tool-wrapper.sh
是一个命令行工具的通用包装器,这个工具将对命令行的内容进行包装(包括加载所需要的类、环境变量等)。
tomcat-native.tar.gz
是Tomcat Native 的安装文件,这是一个利用 APR(Apache Portable Runtime) 来提升 Tomcat 性能的本地 API,主要是提升对 SSL 的处理效率。
tcnative-1.dll
用于整合本地 APR。
tomcat-juli.jar
是Tomcat 的内部日志所使用的组件。
commons-daemon.jar
全称为 Apache common Deamon,用于提供 java 服务的安装,实现将一个普通的 Java 应用变成系统的一个后台服务,在 Linux 下部署为守护进程(后台运行程序),在 Windows 下部署为服务。Tomcat 就是用这个将自己变成一个后台服务。
commons-daemon-native.tar.gz
是Apache common Deamon 的源代码包,包括 Linux 版的和 Windows 版的。
catalina-tasks.xml
用于配置 Catalina 的爬虫任务,目的是搜寻 jar 包。
bootstrap.jar
引导程序,Tomcat 的入口。
conf 文件夹
conf 文件夹用于存放 Tomcat 的一些配置文件。
catalina.policy
是 Tomcat 安全机制的配置文件,默认情况下 Tomcat 是非安全模式运行的,如果需要使用安全模式,那么需要在启动命令行中添加 -security
参数。
catalina.properties
是 Catalina 的配置文件,主要有安全设置、类加载设置、不需要扫描的类设置、字符缓存设置四大块。
context.xml
在 Tomcat 6.0 时从 server.xml
中分离出来,主要用于项目部署的配置。
jaspic-providers.xml
Tomcat 实现了 JASPIC 1.1 Maintenance Release B 标准,并通过这个配置文件集成第三方 JASPIC 身份验证。
jaspic-providers.xsd
定义了 jaspic-providers.xml
所使用到的标签。
logging.properties
是 Tomcat 的日志配置文件。
server.xml
是 Tomcat 容器的配置文件,最为重要的一个,也是最常用的一个,该文件不支持热更新,每次修改完成之后需要重启 Tomcat 服务器。
tomcat-users.xml
是 Tomcat 的用户信息配置文件,在 Tomcat Manager 中使用。
tomcat-users.xsd
定义了 tomcat-users.xml
所使用到的标签。
web.xml
是所有 Web 项目的缺省配置文件。
lib 文件夹
lib 文件夹用于存放 Tomcat 所需要使用的 jar 包。
logs 文件夹
logs 文件夹用于存放 Tomcat 的 日志文件。
temp 文件夹
temp 文件夹用于存放 Tomcat 在运行过程中产生的 临时文件。
temp 文件夹可以被清空,但是不能随意删除,否则会有未知错误发生。
webapps 文件夹
webapps 文件夹用于存放 Web 项目的部署文件,也就是 Web 应用发布在这个文件夹中。
work 文件夹
work 文件夹用于存放项目中部分被 Tomcat 编译之后的文件,比如 JSP 文件。
LICENSE 文件
Tomcat 开源许可证文件。
NOTICE 文件
Tomcat 说明文件。
RELEASE-NOTES 文件
Tomcat 版本说明文件。
RUNNING.txt 文件
Tomcat 帮助文件(使用指南)。