最受Java开发者青睐的Java应用服务器 —— Tomcat
Tomcat 是一个小型的轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试 JSP 程序的首选。今天,就一起来了解下 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的更多相关文章
- 2020 Java开发者数据分析:中国已成为 Java 第一大国
最近知名开发工具供应商Jetbrains在Java 25周年之际,对开发群体做了一次有意思的数据分析. 全文内容可见:https://blog.jetbrains.com/idea/2020/09/a ...
- Java开发者薪资最低?程序员只能干到30岁?国外真的没有996?Intellij真的比Eclipse受欢迎?
Stack Overflow作为全球最大的程序设计领域的问答网站,每年都会出据一份开发者调查报告.近日,Stack Overflow公布了其第9次年度开发者调查报告(https://insights. ...
- 最受欢迎的8位Java大师
面是8位Java牛人,他们为Java社区编写框架.产品.工具或撰写书籍改变了Java编程的方式. P.S 以下排名纯属个人喜好. 1. Tomcat & Ant创始人 James Duncan ...
- 想入职阿里的Java开发者必看,阿里巴巴面试官实战经验分享!
最近社区Java技术进阶群的小伙伴总是会问,如何面试阿里Java技术岗,需要什么条件,做哪些准备:小编就这些问题找到了阿里技术团队中在一线真正带Java开发团队并直接参与技术面试的专家,分享了自身在筛 ...
- 2016年度最受欢迎的100个 Java 库
[编者按]本文作者为 Henn Idan,主要介绍基于 GitHub 中的数据分析,得出的2016年度最受欢迎的100个 Java 库.本文系国内 ITOM 管理平台 OneAPM 编译呈现. 谁拔得 ...
- Java并发编程(您不知道的线程池操作), 最受欢迎的 8 位 Java 大师,Java并发包中的同步队列SynchronousQueue实现原理
Java_并发编程培训 java并发程序设计教程 JUC Exchanger 一.概述 Exchanger 可以在对中对元素进行配对和交换的线程的同步点.每个线程将条目上的某个方法呈现给 exchan ...
- 【转】最受欢迎的8位Java牛人
本文由 ImportNew - 唐尤华 翻译自 javatyro.如需转载本文,请先参见文章末尾处的转载要求. 下面是8位Java牛人,他们为Java社区编写框架.产品.工具或撰写书籍改变了Java编 ...
- Java 开发者不容错过的 12 种高效工具
Java 开发者常常都会想办法如何更快地编写 Java 代码,让编程变得更加轻松.目前,市面上涌现出越来越多的高效编程工具.所以,以下总结了一系列工具列表,其中包含了大多数开发人员已经使用.正在使用或 ...
- 写给Java开发者的Node.JS简介
前言 今天上推特看见这篇文章,点进去发现是新货. 正好最近想入Node的坑,又有一些Java基础,所以希望翻译出来给大家,同时也让自己加深理解. 才疏学浅,如有不妥之处请指正. 原文链接:Node f ...
随机推荐
- TweenMax动画库学习
之前在做HTML5移动端开发的时候,用的都是Animate.css,这个插件封装的的确很好,但是在做一些缓动方面的动画,它也有一定的不足之处,比如手要写一个连续的动画,需要不停的去重复写函数,使得代码 ...
- Python异步处理
回调函数是实现异步操作的常用手法 1.callback版本的示例,其中framework调用logic,在完成某些操作或者接收到信号后,用callback返回异步结果 #!/usr/bin/env p ...
- 31.Linux-wm9876声卡驱动(移植+测试)
本节学习目的 1)分析Linux中的OSS声卡系统 2)移植wm9876声卡 3)使用madplay应用程序播放mp3 1.声音三要素 采样频率 音频采样率是指录音设备在一秒钟内对声音信号的采样次数, ...
- Intrumentation类:ActivityInstrumentationTestCase2学习(1)
public abstract class ActivityInstrumentationTestCase2 extends ActivityTestCase//继承自ActivityTestCase ...
- SSE图像算法优化系列十二:多尺度的图像细节提升。
无意中浏览一篇文章,中间提到了基于多尺度的图像的细节提升算法,尝试了一下,还是有一定的效果的,结合最近一直研究的SSE优化,把算法的步骤和优化过程分享给大家. 论文的全名是DARK IMAGE ENH ...
- osap一站式分析模型
运营系统分析平台技术设计: 项目定义于运营系统关键指标的数据分析 关键代码描述: HiveWriter 主要用于写hive表抽象,包括加分区,写hive表,写success文件: import org ...
- C# 串口接收数据中serialPort.close()死锁
最近在做一个有关高铁模拟仓显示系统的客户端程序,在这个程序中要运用串口serialPort传输数据,因为每次接收数据结束后要更新UI界面,所以就用到了的Invoke,将更新UI的程序代码封装到一个方法 ...
- 从ThoughtWorks 2017技术雷达看微软技术
ThoughtWorks在每年都会出品两期技术雷达,这是一份关于技术趋势的报告,它比起一些我们能在市面上见到的其他各种技术行情和预测报告,更加具体,更具可操作性,因为它不仅涉及到新技术大趋势,比如云平 ...
- 基于Flink秒级计算时CPU监控图表数据中断问题
基于Flink进行秒级计算时,发现监控图表中CPU有数据中断现象,通过一段时间的跟踪定位,该问题目前已得到有效解决,以下是解决思路: 一.问题现象 以SQL02为例,发现本来10秒一 ...
- ThinkPHP中对系统常量的使用
/Wen 当前模块的URL地址 /Wen/postname 当前操作的URL地址 /thinkphp-changliang/ 当前URL地址 APP_DEBUG 是否开启调试模式(框架两种模式:[默认 ...