【Apache Tomcat】

发布于:2025-07-29 ⋅ 阅读:(13) ⋅ 点赞:(0)


Tomcat(全称 Apache Tomcat)是由 Apache 软件基金会开发和维护的一款 开源的 Web 服务器与 Servlet 容器,用于运行基于 Java 的 Web 应用程序。它广泛应用于中小型企业和开发测试环境中,是学习和部署 Java Web 的首选服务器。

Tomcat 基本简介

  • 开发者:Apache 软件基金会
  • 编程语言:Java
  • 最新版本:可参考官网 https://tomcat.apache.org
  • 核心功能:
    • 支持 Servlet 规范(如 Servlet 4.0)
    • 支持 JSP(Java Server Pages)
    • 支持 WebSocket
    • 支持 HTTP/1.1、HTTP/2 等协议(版本依赖)

Tomcat 实际上是一个轻量级的 Servlet 容器(Servlet Container),它也可以当作 HTTP Web 服务器来使用,但它不是一个完整的 Java EE 应用服务器(如 GlassFish、WildFly)。

Tomcat 架构组成

Tomcat 主要由以下几个核心组件组成:

  1. Server
    • 表示整个服务器实例,server.xml 配置文件中最顶层的元素。
  2. Service
    • Server 可以包含多个 Service。
    • 每个 Service 由 Connector 和 Engine 两部分组成。
  3. Connector(连接器)
    • 负责与客户端通信(接收 HTTP 请求,返回响应)。
    • 支持协议:HTTP、AJP 等。
    • 常见配置:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"/>
  1. Engine(引擎)
    • 处理 Connector 传入的请求。
    • 属于 Service 内部组件。
    • 包含 Host 容器。
  2. Host(虚拟主机)
    • 每个 Host 表示一个虚拟主机。
    • 一个 Host 包含多个 Web 应用(Context)。
  3. Context(上下文)
    • 表示一个 Web 应用,通常对应 webapps 下的一个目录。
    • 每个 Context 对应一个 web.xml 文件。

Tomcat 的目录结构

apache-tomcat-<version>/
├── bin/         # 启动与关闭脚本(startup.sh / shutdown.bat)
├── conf/        # 配置文件(server.xml、web.xml 等)
├── lib/         # 所有 Tomcat 运行所需的 jar 包
├── logs/        # 日志文件
├── webapps/     # 默认 Web 应用部署目录
├── work/        # Servlet/JSP 编译后的临时文件
├── temp/        # 临时文件

Tomcat 的工作原理

  1. 启动 Tomcat(执行 bin/startup.sh)
  2. 初始化配置(加载 server.xml)
  3. 创建 Connector,监听端口(如 8080)
  4. 接收到 HTTP 请求后交给对应 Context
  5. Servlet 容器处理请求:
    • 查找对应 Servlet
    • 调用其 service() 方法
  6. 返回处理结果给客户端

Tomcat 的配置文件

  1. conf / server.xml
    Tomcat 的主配置文件,管理服务、端口、连接器等。
  2. conf / web.xml
    默认 Web 应用的全局配置文件,比如 MIME 类型映射、默认欢迎页、错误页面等。
  3. conf / context.xml
    所有 Web 应用的共享 Context 配置。

Tomcat 与其他服务器对比

服务器 类型 是否支持 Java EE 完整规范 特点
Tomcat Web服务器+Servlet容器 轻量、高性能、易于部署
Jetty Servlet 容器 模块化、嵌入式应用多
GlassFish Java EE 应用服务器 官方 Java EE 实现,重量级
WildFly Java EE 应用服务器 高性能企业级服务器

Tomcat 使用场景

  1. Java Web 开发与学习
  2. 轻量级 Web 应用部署
  3. 微服务架构中的 Servlet 容器嵌入
  4. 嵌入式服务器(可内嵌到 Spring Boot)

Tomcat 与 Spring Boot

Spring Boot 内置了 Tomcat,默认使用的是 org.apache.catalina.startup.Tomcat 启动类,实现嵌入式部署:

@SpringBootApplication
public class App {
    public static void main(String[] args) {
        SpringApplication.run(App.class, args);
    }
}

可以通过配置文件指定端口:

server:
  port: 8081

常见问题与优化

  1. 启动慢 / 内存不足
    • 优化 JVM 参数(setenv.sh 或 catalina.sh)
    • 分析日志查找瓶颈
  2. 端口占用
    • 修改 server.xml 中
  3. Session 共享问题
    • 使用 Redis / 数据库持久化 session
    • 或配置 Tomcat 集群
  4. JSP 编译慢
    • 预编译 JSP 或使用更高版本的 JDK

网站公告

今日签到

点亮在社区的每一天
去签到