Tomcat 是一个小型的轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试 JSP 程序的首选。今天,就一起来了解下 Tomcat。

Java 应用服务器 Tomcat

授权协议:Apache

开发语言:Java

操作系统:跨平台

开发厂商:Apache

Github:https://github.com/apache/tomcat

Tomcat 简介

Tomcat 是 Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由 Apache、Sun 和其他一些公司及个人共同开发而成。

Tomcat 服务器是一个免费的开放源代码的 Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试 JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好 Apache 服务器,可利用它响应 HTML (标准通用标记语言下的一个应用)页面的访问请求。

实际上 Tomcat 部分是 Apache 服务器的扩展,但它是独立运行的,所以当你运行 Tomcat 时,它实际上作为一个与 Apache 独立的进程单独运行的。

Tomcat 总体结构

Tomcat 大致分为两个部分,Connector 组件及 Container 组件。Connector 组件负责控制入口连接,并关联着一个Executor。Container 负责 Servlet 容器的实现,Executor 负责具体的业务逻辑,如 Servlet 的执行。而 Server 服务器控制整个  Tomcat 的生命周期。

Servlet 容器的三种工作模式:

独立的 Servlet 容器:Servlet 容器与基于 Java 技术的 Web 服务器集成,Servlet 容器与 Web 服务器在同一个 JVM 中运行,作为独立的 Web 服务器运行。

进程内的 Servlet 容器:Servlet 容器与基于非 Java 技术的 Web 服务器一起使用,通过 Web 服务器插件将 Servlet 容器集成到 Web 服务器中。Web 服务器插件将在Web服务器内部地址空间打开一个 JVM,使得 Servlet 可以在该 JVM 中加载并运行 Servlet。

进程外的 Servlet 容器:该模式也是通过服务器插件的形式将 Servlet 容器与 Web 服务器联系起来。在该模式下,Web 服务器将 Servlet 容器运行在服务器外部的 JVM中。 Web 服务器插件与 Servlet 容器使用 IPC 机制进行通信。

Tomcat 服务器结构

Tomcat 服务器中可以配置多个 Service,每个 Service 可以包含多个 Connector 和一个 Engine。

一个 Service 只有一个 Engine,其出来来自各个 Connector 的客户端请求。Engine上可以有多个 Host(Host 指的是虚拟主机,即在物理服务器上配置的多个域名)。每个Host上又可以部署一个或多个 Web 应用,即结构图中的 Context,而每个应用中又可以配置多个 Servlet 来处理相应的请求。

Tomcat 通过分级的结构将其提供的多服务,多协议,多主机进行层层分解,最终都归结到一个一个的Servlet来执行具体的任务,这也是 Tomcat 被称为 Servlet 容器的原因。

Tomcat 很受广大程序员的喜欢,因为它运行时占用的系统资源小,扩展性好,支持负载平衡与邮件服务等开发应用系统常用的功能;而且它还在不断的改进和完善中,任何一个感兴趣的程序员都可以更改它或在其中加入新的功能。

最受Java开发者青睐的Java应用服务器 —— Tomcat的更多相关文章

  1. 2020 Java开发者数据分析:中国已成为 Java 第一大国

    最近知名开发工具供应商Jetbrains在Java 25周年之际,对开发群体做了一次有意思的数据分析. 全文内容可见:https://blog.jetbrains.com/idea/2020/09/a ...

  2. Java开发者薪资最低?程序员只能干到30岁?国外真的没有996?Intellij真的比Eclipse受欢迎?

    Stack Overflow作为全球最大的程序设计领域的问答网站,每年都会出据一份开发者调查报告.近日,Stack Overflow公布了其第9次年度开发者调查报告(https://insights. ...

  3. 最受欢迎的8位Java大师

    面是8位Java牛人,他们为Java社区编写框架.产品.工具或撰写书籍改变了Java编程的方式. P.S 以下排名纯属个人喜好. 1. Tomcat & Ant创始人 James Duncan ...

  4. 想入职阿里的Java开发者必看,阿里巴巴面试官实战经验分享!

    最近社区Java技术进阶群的小伙伴总是会问,如何面试阿里Java技术岗,需要什么条件,做哪些准备:小编就这些问题找到了阿里技术团队中在一线真正带Java开发团队并直接参与技术面试的专家,分享了自身在筛 ...

  5. 2016年度最受欢迎的100个 Java 库

    [编者按]本文作者为 Henn Idan,主要介绍基于 GitHub 中的数据分析,得出的2016年度最受欢迎的100个 Java 库.本文系国内 ITOM 管理平台 OneAPM 编译呈现. 谁拔得 ...

  6. Java并发编程(您不知道的线程池操作), 最受欢迎的 8 位 Java 大师,Java并发包中的同步队列SynchronousQueue实现原理

    Java_并发编程培训 java并发程序设计教程 JUC Exchanger 一.概述 Exchanger 可以在对中对元素进行配对和交换的线程的同步点.每个线程将条目上的某个方法呈现给 exchan ...

  7. 【转】最受欢迎的8位Java牛人

    本文由 ImportNew - 唐尤华 翻译自 javatyro.如需转载本文,请先参见文章末尾处的转载要求. 下面是8位Java牛人,他们为Java社区编写框架.产品.工具或撰写书籍改变了Java编 ...

  8. Java 开发者不容错过的 12 种高效工具

    Java 开发者常常都会想办法如何更快地编写 Java 代码,让编程变得更加轻松.目前,市面上涌现出越来越多的高效编程工具.所以,以下总结了一系列工具列表,其中包含了大多数开发人员已经使用.正在使用或 ...

  9. 写给Java开发者的Node.JS简介

    前言 今天上推特看见这篇文章,点进去发现是新货. 正好最近想入Node的坑,又有一些Java基础,所以希望翻译出来给大家,同时也让自己加深理解. 才疏学浅,如有不妥之处请指正. 原文链接:Node f ...

随机推荐

  1. 小程序基于疼讯qcloud的nodejs开发服务器部署

        腾讯,疼讯,很疼. 请慎重看腾讯给出的文档,最好做一个笔记. 我只能说我能力有限,在腾讯云小程序的文档中跳了n天. 最后还是觉得记录下来,以防止我的cpu过载给烧了. 此文档是对<小程序 ...

  2. 照虎画猫写自己的Spring——依赖注入

    前言 上篇<照虎画猫写自己的Spring>从无到有讲述并实现了下面几点 声明配置文件,用于声明需要加载使用的类 加载配置文件,读取配置文件 解析配置文件,需要将配置文件中声明的标签转换为F ...

  3. Spring4 IOC详解

    Spring4 IOC详解 上一章对Spring做一个快速入门的教程,其中只是简单的提到了IOC的特性.本章便对Spring的IOC进行一个详解.主要从三个方面开始:基于xml文件的Bean配置,基于 ...

  4. less简述

       什么是less? 一种 动态 样式 语言. LESS 将 CSS 赋予了动态语言的特性,如 变量, 继承, 运算, 函数. LESS 既可以在 客户端 上运行 (支持IE 6+, Webkit, ...

  5. Unity3D 热更新方案(集合各位专家的汇总)

    http://blog.csdn.net/guofeng526/article/details/52662994 热更新”这个词,在Unity3D的应用下,是有些语义错误的,但是作为大家都熟知的一项技 ...

  6. 常用接口简析1---IEnumerable、IEnumerator简析

    常用接口的解析(链接) 1.IEnumerable深入解析 2.IComparable.IComparable接口解析 3.IList.IList接口解析      引言: IEnumerable和I ...

  7. Android APK反编译 apktool使用教程

    2017年棋牌游戏突然就火了,正所谓春江水暖鸭先知本猿处在软件行业中就能清晰的感受到市场的变化,最近老家那边也是玩的风生水起,于是最近闲暇时光想到反编译下这些棋牌软件,看看代码实现的思路 (注:反编译 ...

  8. 对java多线程里Synchronized的思考

    Synchronized这个关键字在多线程里经常会出现,哪怕做到架构师级别了,在考虑并发分流时,也经常会用到它.在本文里,将通过一些代码实验来验证它究竟是"锁"什么. 在启动多个线 ...

  9. python并发编程之多进程二

    一,multiprocessing模块介绍 python中的多线程无法利用多核优势,如果想要充分地使用多核CPU的资源(os.cpu_count()查看),在python中大部分情况需要使用多进程.P ...

  10. 如何编写gitignore文件

    原文链接:https://www.cnblogs.com/jingtyu/p/6831772.html 为什么要有.gitignore文件 项目中经常会生成一些Git系统不需要追踪(track)的文件 ...