当前位置: 首页 > news >正文

【Apache Tomcat】

目录

  • Tomcat 基本简介
  • Tomcat 架构组成
  • Tomcat 的目录结构
  • Tomcat 的工作原理
  • Tomcat 的配置文件
  • Tomcat 与其他服务器对比
  • Tomcat 使用场景
  • Tomcat 与 Spring Boot
  • 常见问题与优化

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 完整规范特点
TomcatWeb服务器+Servlet容器轻量、高性能、易于部署
JettyServlet 容器模块化、嵌入式应用多
GlassFishJava EE 应用服务器官方 Java EE 实现,重量级
WildFlyJava 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
http://www.lryc.cn/news/602579.html

相关文章:

  • 设计模式实战:自定义SpringIOC(理论分析)
  • 中国汽车能源消耗量(2010-2024年)
  • 力扣17:电话号码的字母组合
  • 设计模式(二十四)行为型:访问者模式详解
  • ADB+Python控制(有线/无线) Scrcpy+按键映射(推荐)
  • 【学习笔记】AD7708/18(1)-理解官网的参考代码
  • MacBook IOS操作系统格式化U盘FAT32
  • 【深度解析】R语言与作物模型(以DSSAT模型为例)融合应用
  • 分布式微服务--核心组件与架构关系(一)
  • R语言简介(附电子书资料)
  • Leetcode_349.两个数组的交集
  • JavaScript手录09-内置对象【String对象】
  • 6.2 总线事务和定时 (答案见原书 P295)
  • 基于Flask的智能停车场管理系统开发实践
  • C语言:20250728学习(指针)
  • 使用node-cron实现Node.js定时任务
  • Javaweb Day3
  • 主要分布于内侧内嗅皮层的层Ⅲ的网格-速度联合细胞(Grid × Speed Conjunctive Cells)对NLP中的深层语义分析的积极影响和启示
  • 学习人工智能所需知识体系及路径详解
  • BUUCTF-MISC-[HBNIS2018]caesar1
  • 科技风杂志《科技风》杂志社科技风编辑部2025年第19期目录
  • 《Ai智能眼镜的市场定义及用户分析》- 深圳市天趣星空科技有限公司 CEO 王洁
  • 【7.26-7.28胜算云AI日报:首个开源3D世界生成模型腾讯混元、微软预示 8 月 GPT-5 发布、Nemotron推理、商汤悟能、DM夺金】
  • Python 实现多服务器并发启动 SDK-C Master 与 Viewer 的分布式方案
  • 科技赋能成长 脑力启迪未来
  • windows内核研究(异常-CPU异常记录)
  • 计算机视觉---Halcon概览
  • 暑期自学嵌入式——Day10(C语言阶段)
  • 生成器和迭代器的区别
  • 【65 Pandas+Pyecharts | 山东省2025年高考志愿投档数据分析可视化】