Java:顶级Java应用程序服务器 — Tomcat、Jetty、GlassFish、WildFly
如果你想编写Java web应用程序,首先需要做出一个艰难的决定:选择运行应用程序的Java应用程序服务器。
什么是应用服务器?一般来说,应用程序服务器执行Java应用程序。在操作系统中启动它们,然后将应用程序部署到其中。将应用程序服务器视为运行Java代码并使其正常运行的容器。此外,应用程序服务器提供了一些通用的基础结构和功能功能,你可以在自己的代码中使用这些功能。
在本文中,我们介绍4个流行的Java应用程序服务器。
Tomcat
Tomcat是与Apache软件基金会开发的Java web应用程序一起使用的最流行的应用程序服务器。
事实上,Tomcat并没有实现JavaEE应用程序服务器所需的所有功能。Tomcat的准确标题应该是“web服务器”或“servlet容器”。但即使Tomcat不支持一些现成的JavaEE特性,你仍然可以使用这些特性中的大部分。你只需要将它们作为附加的第三方依赖项包含在应用程序中即可。底线是你可以在Tomcat上运行Java EE应用程序。
因此,Tomcat是成熟的、文档丰富的,也是使用最广泛的Java应用程序服务器。凭借良好的文档和互联网上关于它的教程,Tomcat是几乎所有Java web应用程序中应用服务器角色的有力竞争者。

Jetty
Jetty是另一个应用服务器(这是由EclipseFoundation开发的),从技术上讲,它不是一个功能齐全的JavaEE容器。就像Tomcat一样,它缺乏对许多Java EE特性的支持。就像Tomcat一样,你仍然可以通过包含额外的第三方依赖项来使用大部分功能。
尽管Jetty的市场份额远不及Tomcat,但它仍在行业中广泛使用。它的两个主要卖点是紧凑和占地面积小。两者都使Jetty非常适合受限环境和嵌入其他产品。
GlassFish
GlassFish是由Oracle开发的功能齐全且经过认证的Java EE应用程序服务器。因此,GlassFish比Tomcat或Jetty更重,而且可以说,操作起来有点困难。
事实上,GlassFish不仅仅是一个通用的JavaEE应用程序服务器。它是JavaEE标准的参考实现。这意味着GlassFish被用来展示Java EE功能,并且它得到了定义Java EE标准的人的贡献。因此,GlassFish将始终首先支持最新的JavaEE特性。这是一个优点。
WildFly
与GlassFish相比,WildFly的最大优势是Red Hat提供了一条从WildFly到其商业支持的应用程序服务器JBoss Enterprise application Platform的简单迁移路径。这意味着,如果你决定这是你需要的,你可以立即使用WildFly,并在将来快速迁移到JBossEAP以获得商业支持。
结论
总的来说,如果你需要更小的占地面积,请考虑Jetty。如果你的项目中需要广泛的Java EE支持,请使用WildFly。最重要的是,如果你的组织已经在其他项目中使用了特定的应用程序服务器,那么只需效仿即可。
相关文章:
Java:顶级Java应用程序服务器 — Tomcat、Jetty、GlassFish、WildFly
如果你想编写Java web应用程序,首先需要做出一个艰难的决定:选择运行应用程序的Java应用程序服务器。什么是应用服务器?一般来说,应用程序服务器执行Java应用程序。在操作系统中启动它们,然后将应用程序部署到其中。将应用程序服…...
如何在SpringBoot项目上让接口返回数据脱敏,一个注解即可
1 背景需求是某些接口返回的信息,涉及到敏感数据的必须进行脱敏操作2 思路①要做成可配置多策略的脱敏操作,要不然一个个接口进行脱敏操作,重复的工作量太多,很显然违背了“多写一行算我输”的程序员规范。思来想去,定…...
python 之 海龟绘图(turtle)
注:从个人博客园移植而来 使用简介 python 2.6引入的一个简单的绘图工具,俗称为海龟绘图。3.x以上使用的话,可通过pip进行安装,命令为: pip/pip3 install turtle如果出现如下错误: 解决方式: …...
RT-Thread SPI使用教程
RT-Thread SPI 使用教程 实验环境使用的是正点原子的潘多拉开发板。 SPI从机设备使用的是BMP280温湿度大气压传感器。 使用RT-Thread Studio搭建基础功能。 1. 创建工程 使用RT-Thread Studio IDE创建芯片级的工程。创建完成后,可以直接编译下载进行测试。 2.…...
shiro使用——整合spring
shiro使用——整合spring 1. 引入相关配置 <dependency><groupId>org.apache.shiro</groupId><artifactId>shiro-spring</artifactId><version>1.9.1</version></dependency>2. 自定义Realm类 继承AuthorizingRealm 并重写相…...
2023-02-20 leetcode-AccountsMerge
摘要: 记录对leetcode-AccountsMerge的反思 要求: Given a list accounts, each element accounts[i] is a list of strings, where the first element accounts[i][0] is a name, and the rest of the elements are emails representing emails of the account. * Now, w…...
中国高速公路行业市场规模及未来发展趋势
中国高速公路行业市场规模及未来发展趋势编辑中国高速公路行业市场规模正在迅速增长。随着中国经济的快速发展和城市化的加速,对交通基础设施的需求也在不断增加。高速公路是最有效的交通工具,可以大大缩短交通时间,提高出行效率。因此&#…...
佳能iC MF645CX彩色激光多功能打印机报E302-0001故障码检修
故障现象: 一台佳能iC MF645CX彩色激光多功能一体机开机报E302-0001故障代码,如果设备未恢复,请联系经销商或客户支持中心。 维修分析: 佳能iC MF645CX彩色激光多功能一体机开机报E302-0001故障代码的...
加密越来越简单——用JavaScript实现数据加密和解密
加密越来越简单——用JavaScript实现数据加密和解密概念常用算法1. MD5加密算法2. SHA-1加密算法3. AES加密算法代码示例结论总结在当今互联网的世界中,安全性越来越受到关注,数据加密成为了必不可少的一环。Javascript作为前端开发的主要语言之一&#…...
线程池的使用场景
学习整理线程池的使用场景。...
图像分割算法
图像分割算法阈值分割固定阈值自适应阈值大津阈值(OTSU)最大熵阈值连通域分析区域生长分水岭阈值分割、连通域分析、区域生长、分水岭 阈值分割 固定阈值、自适应阈值(adaptiveThreshold)、大津阈值(OTSU)、最大熵阈值(KSW) 固定阈值 固定阈值的调用函数: //Input…...
《mysql技术内幕:innodb存储引擎》笔记
任何时候Why都比What重要;不要相信任何的“神话”,学会自己思考;不要墨守成规,大部分人都知道的事情可能是错误的;不要相信网上的传言,去测试,根据自己的实践做出决定;花时间充分地思考,敢于提出质疑。1.MYSQL被设计为一个单进程多…...
windows与linux系统ntp服务器配置
一. windows 打开windows终端(管理员),顺序输入以下指令 net stop w32time w32tm /unregister w32tm /register net start w32time w32tm /resync net stop w32time net start w32timewin r 输入regedit,打开注册表。 ①将HKEY_…...
html常用font-family设置字体样式
<table border"1" cellpadding"0" cellspacing"0" ><tr><td><h3 style"font-family: 黑体;">黑体:SimHei</h3></td><td><h3 style"font-family: 华文黑体;">华…...
数据库事务AICD以及隔离级别
目录一.事务的ACID二.隔离级别三.并发事务中的问题1.脏写2.脏读3.不可重复读4.幻读四.MVCC机制五.读锁与写锁六.大事务的影响七.事务优化一.事务的ACID 原子性(Atomicity):一个事务中的所有操作,要么全部成功,要么失败全部回滚,不…...
(4)VScode之ssh基础配置
VScode和SSH基础配置问题集合 Author:onceday date:2022年8月31日 本文记录linux的ssh和vscode开发环境搭建之路。 参考文档: 离线安装vscode Once Day CSDN博客关于x86、x86_64/x64、amd64和arm64/aarch64 Bogon 简书arm64和aarch64之间…...
springcloud-1环境搭建、service provider
搭建项目环境创建新项目,选择archetype-webapp,创建一个父项目,该父项目会去管理多个微服务模块(module)项目设置Settings->Editor->File Encoding:Global/Project Encoding 改为UTF-8Default encoding for properties files:默认属性文…...
光谱仪工作过程及重要参数定义
标题光谱仪工作过程CCD、PDA薄型背照式BT-CCD狭缝Slit暗电流Dark Current分辨率Resolution色散Dispersion光栅和闪耀波长Grating波长精度、重复性和准确度Precision带宽Band widthF数F/#光谱仪工作过程 CCD、PDA 电荷耦合器件(Charger Coupled Device,缩…...
W800|iot|HLK-W800-KIT-PRO|AliOS|阿里云| |官方demo|学习(1):板载AliOS系统快速上手
板载系统简介 HLK-W800-KIT-PRO 是海凌科电子面向开发者,采用了联盛德 w800 方案,带有一个RGB三色灯,集成了 CHT8305C 温湿度传感器的多功能开发板,用户可以在上面学习、研究嵌入式系统和物联网产品的开发,本套设备运行…...
字节终面,一道Linux题难住我了
以下是一道难道系数中高并且高频出现的linux面试题,题目具体要求如下: linux面试题: 某文件有多列数据,空格隔开,统计第n列单词,打印出现频率最高的5个单词。 解答这道面试题需要用到3个linux命令ÿ…...
低成本自动化方案:OpenClaw+自部署Gemma-3-12b-it替代SaaS API
低成本自动化方案:OpenClaw自部署Gemma-3-12b-it替代SaaS API 1. 为什么需要替代SaaS API? 去年我负责一个自动化内容处理项目时,遇到了一个典型困境:随着任务复杂度的提升,调用商业API的成本开始失控。一个包含网页…...
基于S7-200控制的自动洗车系统 本设计包括设计报告,PLC组态仿真,I/O接口,带注释程序...
基于S7-200控制的自动洗车系统 本设计包括设计报告,PLC组态仿真,I/O接口,带注释程序pdf版,接线图,控制电路图,主电路图,PLC接线图,顺序功能图 总体设计 系统有自动和手动模式,选择手…...
太空垃圾清理算法:近地轨道debug生死时速
当测试思维遭遇太空危机作为软件测试从业者,我们习惯于在虚拟的数字世界中寻找漏洞、调试代码、确保系统稳定运行。我们面对的是逻辑错误、内存泄漏、并发冲突,最严重的后果或许是服务中断或数据丢失。然而,请想象这样一个场景:你…...
AI 模型推理延迟与吞吐率的权衡
AI模型推理延迟与吞吐率的权衡:优化策略与实践 在AI应用场景中,模型推理的延迟(Latency)和吞吐率(Throughput)是衡量系统性能的两大核心指标。延迟指单次请求的响应时间,直接影响用户体验&…...
MLOps实践指南:让AI模型持续交付
在人工智能技术日益渗透到各行各业核心业务的今天,一个严峻的现实是:大量机器学习模型在实验室里表现优异,却止步于概念验证阶段,难以稳定、高效地部署到生产环境。对于软件测试从业者而言,传统的测试方法与工具在应对…...
Delphi经典8大天坑|第五篇:ShortString与String混用,导致字符串截断/乱码
一、现象描述项目中同时使用ShortString和string两种字符串类型,赋值时出现字符串被莫名截断(超过255字符的部分丢失),或出现乱码,尤其是在Delphi D7及以下版本中,问题更常见。典型场景:将一个长…...
安规标准考核题库-2(IEC 62477-1:2012+AMD1:2022 )
本题库严格对标 IEC 62477-1:2012《电力电子变换器系统和设备安全要求 第 1 部分:总则》AMD1:2022 修订版,贴合储能双向 PCS 的设计、测试、认证全流程场景,分为判断题、单选题、多选题三类,所有题目均附标准条款依据与详细解答。…...
数据仓库大规模数据处理:海量存储与高效访问实战优化方案
数据仓库大规模数据处理:海量存储与高效访问实战优化方案一、引言二、核心挑战:大规模数据带来的3大问题三、整体解决方案流程图(海量数据存储与访问)四、一、大规模数据存储优化方案(核心)4.1 方案1&#…...
Qwen3-TTS声音设计模型5分钟快速部署:10种语言语音合成一键搞定
Qwen3-TTS声音设计模型5分钟快速部署:10种语言语音合成一键搞定 1. 为什么选择Qwen3-TTS声音设计模型? 1.1 用自然语言"设计"声音,不是选择音色 传统语音合成工具通常提供固定音色库,而Qwen3-TTS的VoiceDesign功能允…...
Pi0机器人控制实战:从模型下载到Web演示完整流程
Pi0机器人控制实战:从模型下载到Web演示完整流程 1. 项目概述与核心价值 Pi0是一个创新的视觉-语言-动作流模型,专为通用机器人控制设计。这个开源项目将深度学习与机器人技术相结合,通过自然语言指令和视觉输入来生成精确的机器人动作。项…...
