如何学习MiniTomcat?手把手带你写一个 MiniTomcat

6 周搭建一个实用的 Tomcat 框架

郭屹,中国 Java 研发工程师鼻祖之一,曾在 Sun Microsystems 公司 Java 研发中心担任 J2EE 研发工程师,同时他也是 JDBC Driver、Minis 开发者,Norming 软件国际 CTO。

在长达 30 余年的编程生涯中,他经历了 Java 技术的飞速发展,积累了丰富的行业经验和技术实践,有 MiniSpring、MiniTomcat、MiniRedis、MiniLanguage 等几款开源作品。除此之外,他还十分乐于分享自己的知识和经验,是《手把手带你写一个 MiniSpring》专栏以及技术类书籍《认识编程》和《Java 编程十五讲》的作者,一直以来他都在通过写作、讲演等方式推动着编程社区的发展。

课程介绍

众所周知,Tomcat 是应用最广泛的 Web 应用服务器,不过在实际使用 Tomcat 过程中,我们总是会遇到各种复杂问题,比如:

  • 如何管理多个 Servlet?
  • 如何支持多个独立的应用?
  • 大量用户请求的性能问题如何解决?
  • 处理高并发请求时的内存泄漏问题怎么处理?
  • ……

这些复杂的问题出现时,如果仅仅是会使用 Tomcat 是万万不能解决的,我们需要深入 Tomcat 原理,从底层的视角审视问题,并彻底解决问题。而掌握一项技术最好也是最扎实的方式就是重造轮子。

为此我们邀请了前 Sun Microsystems Java 研发工程师郭屹老师,他会带你一步步剖析源码,深入 Tomcat 底层原理,并让你从中领悟 Tomcat 的设计哲学,帮助你在面对复杂的生产问题时快速找到解决方案,同时也为你自己设计系统提供思路与最佳实践。

课程设计

MiniTomcat 的课程大体上分成四大块:HTTP Server、Connector、Container 和扩展部分。熟悉 Tomcat 的人想必更加清楚,Connector + Container 就是 Tomcat 的核心了。学习这些内容,会为进一步的研究打下良好的基础。

第一章 实现一个简单的 Web 应用服务器

Web 应用的核心是对 HTTP 协议的支持,接收浏览器发送的 HTTP 请求,解析 URL,找到资源返回内容,显示在客户浏览器上。这一部分先不引进任何规范,而是自己简单地实现 Request 请求与 Response 响应。虽然它很简单,但是也是一个地道的 Web 应用服务器,不仅支持静态资源,还能运行程序动态返回内容。我们后面的改造都会基于这个简单服务器。

第二章 实现专业的 Connector

基于简单的应用服务器,这部分我们会来重点实现 MiniTomcat 连接层,并且按照 Servlet 规范进行改造。优化代码结构,将第一部分的 Server 拆分为 Connector 与 Processor。之后初步优化性能,引入 Processor 池化技术,支持 Processor 并发执行,提高 Server 的高并发能力。然后,我们就要按照规范行事,实现 Servlet 对请求和响应的接口规范。

这一部分的改造过后,MiniTomcat 的连接层就有模有样了。

第三章 实现专业的 Container

连接层解决后,我们再重点设计实现容器。先引入 Wrapper,实现 Context 与 Wrapper,形成两层容器,将整个框架进一步按照功能拆分成不同模块,每一部分各司其职。最后引入日志、过滤器、监听器等通用组件。这一部分之后,Tomcat 的核心就模仿出来了。

第四章 完成 MiniTomcat 及扩展讨论

这个部分我们将考虑多应用支持,进一步拆分功能,BootStrap 只负责启动服务器,业务代码都在 Context 内运行,支持不同路由转发到不同应用之中,而应用之前相互隔离。这个需求就要求我们改变标准的 Java 类加载机制,自定义加载过程。最后通过 web.xml 各项配置,启动 Server,实现完整而基本的 Tomcat。

作为扩展,我们会探讨如何把 MiniSpring 打包放在 MiniTomcat 中运行,形成 Mini 系列的核心环境,还将探讨将网络 I/O 扩展为支持 NIO,以支持高并发场景的方案。

课程目录

如何学习MiniTomcat?手把手带你写一个 MiniTomcat

立即购买

本站内容均为网友上传分享,本站仅负责分类整理,如有任何问题可联系我们(点这里联系)反馈。

(0)
adminadmin
上一篇 2024年1月4日
下一篇 2024年1月4日

相关推荐

  • 技术管理案例课

    踩坑复盘 + 案例分析 + 精进攻略 = 高效管理 许健 eBay 基础架构工程研发总监 你将获得 完整的经理人成长路线 合格经理人应具备的 4 个特质 提高组织效率的 3 个方法…

    极客时间 2023年4月24日
    014
  • 体验设计案例课

    用量化方式,重新定义体验设计 炒炒 前腾讯高级设计师,《一个 APP 的诞生》作者 【专栏交流群】 炒炒的体验设计交流群 你将获得 行业里第一套系统的体验设计量化体系 体验设计中 …

    极客时间 2023年4月24日
    019
  • 数据分析思维课

    数据给你一双看透本质的眼睛 郭炜 前易观 CTO 你将获得 一次性掌握常用的数据分析工具 30+ 数据分析场景解析 揭秘数据分析的底层逻辑 利用数据分析高效决策 课程介绍 这是一个…

    极客时间 2023年4月24日
    028
  • Web 安全攻防实战

    全面掌握 Web 安全漏洞原理与攻防技能 王昊天 螣龙安科创始人兼 CEO 你将获得 常见渗透测试工具使用方法; SQL 注入、XSS、CSRF 漏洞演练; 前后端框架、容器安全攻…

    极客时间 2023年4月24日
    016
  • Python 自动化办公实战课

    快速上手 Python,让重复工作自动化 尹会生 前游戏公司技术总监,前新浪网研发中心技术经理 你将获得 30 个自动化办公提效程序 8 周,用 Python 让重复工作自动化 零…

    极客时间 2023年4月24日
    08
  • 现代 React Web 开发实战

    React 新版本 + 函数组件 &Hooks 优先 = 高效进阶 宋一玮 FreeWheel 中国研发中心前端架构师 【交流群】 ,专栏交流群 你将获得 发展趋势:建构立…

    极客时间 2023年4月24日
    023
  • C++怎么学习?现代C++20实战高手课

    进阶编程能力,成为C++高手 卢誉声,Autodesk工程师,主攻数据平台架构研发,曾就职思科系统(中国)研发中心云产品研发部。卢誉声参与大规模分布式系统的服务器后端以及SDK的设…

    2023年12月20日
    00
  • 如何搭建直播视频平台?Python实战 · 从0到1搭建直播视频平台

    搭建直播视频平台的过程需要涉及到多个步骤,从设计到开发、部署再到运营都需要细致的规划和执行。以下是搭建直播视频平台的一般步骤: 以上是搭建直播视频平台的一般步骤,具体实施时可以根据…

    2024年1月2日
    01
  • 性能工程高手课

    得性能者得天下 庄振运 Facebook 性能优化和容量管理高级专家 你将获得 性能测试的分类和经验教训; 性能分析的基本理论和实践; 性能优化的原则和十大策略; 硅谷一线公司的实…

    极客时间 2023年4月24日
    06
  • 深入浅出计算机组成原理

    带你掌握计算机体系全貌 徐文浩 bothub 创始人 限时福利 你将获得 学以致用的计算机底层知识; 30+ 计算机组成原理核心要点; 洞悉性能问题的本质; 组成原理在工业界的实际…

    极客时间 2023年4月24日
    09

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注