一文总结应用、Web、HTTP服务器,Apache、Nginx,Tomcat、IIS、JBoss、Glassfish等区别

一个学习的总结,或者说是汇总,有些链接给出的观点过时,已按照自己的理解经过修改编辑;

应用、Web、HTTP服务器

这篇文章讲述典型的Web服务器的工作原理。
Web服务器和应用服务器有什么区别?EAR和WAR部署包之间的不同?
参考stackoverflow这个问题。在大多数情况下,Web服务器和应用服务器基本等价的。Tomcat(多被认为是Web服务器)怎么会有能力去运行企业级的应用程序。这样的话,Tomcat到底是Web服务器还是应用服务器?
类比于JPA和Hibernates,那么区分Web服务器和应用服务器就会变得非常简单。stackoverflow另一个问题
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文件。

Apache & Tomcat

解析一 :
apache支持静态页,tomcat支持动态的,比如servlet等,
一般使用apache+tomcat的话,apache只是作为一个转发,对jsp的处理是由tomcat来处理的。
apche可以支持phpcgiperl,但是要使用java的话,你需要tomcat在apache后台支撑,将java请求由apache转发给tomcat处理。
apache是web服务器,tomcat是应用(java)服务器,它只是一个servlet(jsp也翻译成servlet)容器,可以认为是apache的扩展,但是可以独立于apache运行。
两者都有HTTP服务的功能
不同点:
Apache是专门提供HTTP服务的,以及相关配置的(例如虚拟主机、URL转发等等)
Tomcat是Apache组织在符合J2EE的JSP、Servlet标准下开发的一个JSP服务器

解析二:
APACHE是一个web服务器环境程序,启用他可以作为web服务器使用,不过只支持静态网页 如(asp,php,cgi,jsp)等动态网页的就不行;
如果要在APACHE环境下运行jsp的话就需要一个解释器来执行jsp网页,而这个jsp解释器就是TOMCAT, 为什么还要JDK呢?因为jsp需要连接数据库的话,就要jdk来提供连接数据库的驱程,所以要运行jsp的web服务器平台就需要APACHE+TOMCAT+JDK

整合的好处是:
如果客户端请求的是静态页面,则只需要Apache服务器响应请求;
如果客户端请求动态页面,则是Tomcat服务器响应请求;
因为jsp是服务器端解释代码的,这样整合就可以减少Tomcat的服务开销;

解析三:
apache:侧重于http server
tomcat:侧重于servlet引擎,如果以standalone方式运行,功能上与apache等效 , 支持JSP,但对静态网页不太理想;

apache是web服务器,tomcat是java应用服务器,servlet容器,可以认为是apache的扩展,但是可以独立于apache运行。

JBoss vs. Glassfish

如果是企业级的复杂应用,无论从稳定性,成熟度,还是从产品的完整性来看,JBoss无疑是比较好的选择。
GlassFish的闪光点在热部署,支持OSGI,而且内核变的很小,启动速度非常快。

Glassfish 和 JBoss 都是 J2EE 应用服务器,都可以作为 EJB 容器来运行 EJB 的。
Glassfish 是 Java EE 的参考实现(是Oracle家产品),Java EE 最新的版本都能在 Glassfish 中得到体现。
个人感觉 Glassfish 比 JBoss 好,光那个 Administrator 的管理界面就比 JBoss 的漂亮。

JBoss实现所有j2ee的规范和api,它的优势在于具有良好的性价比,支持的标准新,版本快,有开放源码的所有优点,支持热部署。
可以在开发阶段采用GlassFish,真实运行环境采用JBoss。

现在流行的Java EE容器有很多:Tomcat、JBoss、Resin、Glassfish等。
  1. Tomcat是Apache鼎力支持的Java Web应用服务器(servlet容器),由于它优秀的稳定性以及丰富的文档资料,广泛的使用人群,从而在开源领域受到最广泛的青睐。
  2. Jboss作为Java EE应用服务器,它不但是Servlet容器,而且是EJB容器,从而受到企业级开发人员的欢迎,弥补Tomcat只是一个Servlet容器的缺憾。
  3. Resin也仅仅是一个Servlet容器,然而由于它优秀的运行速度,使得它在轻量级Java Web领域备受喜爱,特别是在互联网Web服务领域。
  在商用应用服务器里主要有:Weblogic、Websphere,然而就在同等条件下,Weblogic在性能及易用性等方面,要比Tomcat优秀很多。
  4.glassfish是Sun公司推出的Java EE服务器(Java EE容器),一个比较活跃的开源社区,不断的通过社区的反馈来提高其的可用性,经过glassfish v1 glassfish v2 到今天的glassfish v3 ,它已经走向成熟。Glassfish是一个免费、开放源代码的应用服务,实现Java EE 5平台包括以下最新技术:EJB 3.0、JSF 1.2、Servlet 2.5、JSP 2.1、JAX-WS 2.0、JAXB 2.0、 Java Persistence 1.0、Common Annonations 1.0、StAX 1.0等。
  支持集群,通过内存中会话状态复制,增强部署体系结构的可用性与可伸缩性,它对集群有着很好的支持,可以简单到通过添加机器,就可轻松的提高网站的带负载能力,在解析能力方面,它对html的吞吐能力与apache服务器不分上下,就是tomcat所不能比的,支持目录部署,热部署,解决 tomcat对热部署能力的缺陷。在版本方面做的更加人性化,有开发时用的简化版,专门用于部署web项目的版本,还要完全符合j2ee标准的版本。

其他学习资料

参考

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

猜你喜欢

转载自blog.csdn.net/lonelymanontheway/article/details/80711369