专栏名称: 数据分析与开发
伯乐在线旗下账号,分享数据库相关技术文章、教程和工具,另外还包括数据库相关的工作。偶尔也谈谈程序员人生 :)
目录
相关文章推荐
数据中心运维管理  ·  我国算力中心大盘点,8大枢纽与10大数据中心 ·  1 周前  
数据中心运维管理  ·  冷却分配单元:液冷系统的核心 ·  6 天前  
数据中心运维管理  ·  国内首个洞库式数据中心!贵安腾讯七星数据中心 ... ·  4 天前  
数据中心运维管理  ·  北京自2026年起,对PUE>1.35的数据 ... ·  1 周前  
字节跳动技术团队  ·  又稳又快!基于ByteHouse ... ·  1 周前  
字节跳动技术团队  ·  又稳又快!基于ByteHouse ... ·  1 周前  
51好读  ›  专栏  ›  数据分析与开发

为什么说 Tomcat 是一个 Web 服务器而不是一个应用服务器

数据分析与开发  · 公众号  · 数据库  · 2016-12-05 20:41

正文

(点击上方公众号,可快速关注)


英文:DZone

译者:黄小非

链接:www.importnew.com/9702.html


很多程序员其实并不太在意他们所使用的一些基础软件设施。对于网络应用程序员来说,一个典型的例子就是:他们很难说清楚Web服务器和应用服务器有什么区别,也不太搞得清楚EAR和WAR部署包之间的不同。类似的例子还有很多。



对于“Web服务器和应用服务器之间的区别”这种问题,其实网上有很多精妙的回答,这个就是其中之一。在大多数情况下,Web服务器和应用服务器,这两个词语是基本等价的。这篇文章阐述了典型的Web服务器的工作原理。通常大家纠结的问题是:Tomcat(多被认为是Web服务器)怎么会有能力去运行企业级的应用程序。这样的话,Tomcat到底是Web服务器还是应用服务器?下面就让我来说说我自己的看法。


以前,我曾经在stackoverflow上看到一个让我很纠结的问题就是:JPA和Hibernates到底有什么区别。我回复了这个问题,但是其中有一条回复让我对Java EE规范和Java EE服务器有了更深入和细致的理解。如果你能够了解这些细节,那么区分Web服务器和应用服务器就会变得非常简单。在我的研究过程中,我找到了这篇文章,对这个问题进行了更深入的讨论。


通过更加细致的阅读JavaEE规范,会给我们的讨论带来更明晰的线索。我们知道,所谓的规范无非就是一套规则而已。也就是定义一些接口。任何一个JavaEE服务器都需要服从这些规范,并实现这些接口。你可以在这里找到那些“官方认证”的JavaEE服务器的清单。如果你把你的企业级应用程序(就是指使用到JPA,EJB或者其他JavaEE组件功能的应用程序)部署到一个符合JavaEE规范的服务器上,那么真正的应用服务器本身是不需要你的部署包包含对JavaEE组件进行实现的类库的。如果部署的时候你必须要通过自己的应用程序中自带jar文件来支持这些JavaEE组件,那你用的就是Web服务器,就像是Tomcat。


举个例子,如果你在你的程序里使用了JPA,然后你打算把程序部署到JBoss AS7服务器上,你的程序本身是不需要包含支持JPA实现的jar包的。但是如果你想把程序部署到Tomcat服务器上,你就必须要把实现JPA功能的jar包放到你的lib库中,然后再一起部署过去。这就是为什么JBoss AS7是应用服务器而Tomcat是Web服务器的原因。另一个关键的区别是,Tomcat上不能部署EAR文件,而只能部署WAR文件。



关注「数据库开发」

看更多精选技术文章

↓↓↓