Tomcat Jboss Glassfish 三种常见web容器比较

时间:2024-01-16 09:12:50

一、缘由:

  新公司平台是纯Java架构,有用到Java Web(JSP)、Java 业务(EJB)、Nginx、、Websphere MQ、Mysql这样。大家知道java是跑在容器里的,

这里的业务要用到EJB故选用了Glassfish容器。

  EJB是什么?EJB是一个服务器端的组件模型,可以部署分布式应用程序。J2EE规范这么说:Enterprise Java Bean (EJB )组件是运行在服务器端的业务组件;

另外Java Servlet和Java Server Pages(JSP)是运行在服务端的web组件。

  那么常见的web容器(应用服务器)又有什么区别呢?下面慢慢道来。

二、详解:

1、Web容器

  Web容器是一种服务调用的规范,J2EE运用了大量的容器和组件技术来构建分层的企业应用。在J2EE规范中,相应的有Web Container和EJB Container等。

  Web容器给处于其中的应用程序组件(JSP、Servlet)提供环境,JSP、Servlet直接与容器中的环境变量打交道,而不必关注其他系统问题。

  Web容器更多的是与HTTP的请求打交道,而EJB容器不是,它更多的是跟数据库其他服务打交道。

2、Web服务器

  Web服务器可以处理HTTP协议,当Web服务器收到一个HTTP请求,就会返回一个HTTP响应。

  Web服务器可以针对静态页面或者图片的请求进行跳转,或者把动态响应委托给其他一些程序,如CGI、JSP、Servlet、ASP、JavaScript或者其他服务端技术。

  Web服务器仅仅提供一个可执行服务器端环境和返回响应的环境,不涉及其他技术。

1)Apache

  是简单的HTTP服务器,速度快,在大型网站中,常与应用服务器配合部署,仅支持静态页面。

2)Nginx

  是著名的HTTP服务器,速度快,支持负载均衡。

3、应用程序服务器(Web容器)

  作为应用服务器,要求可以通过各种协议(包括HTTP协议)把商业逻辑暴露给客户端应用程序。应用程序使用商业逻辑就像你调用对象的一个方法或过程一样。

1)Tomcat

  Tomcat仅是个HTTP服务器,是Apache鼎力支持的Java Web服务器,是Servlet/JSP API的执行器,也就是所谓的Servlet容器,不支持EJB、JMS。

相对于JBOSS来说较为轻量级,实现的功能也较少,不能完整的支持最新的JavaEE标准,适用于较为简单的Web应用。

2)JBOSS

  JBOSS是开源Java EE应用服务器,它不但是Servlet容器,而且是EJB容器,它提供了更多开箱即用的功能特性,也更重,它完整的实现了J2EE 6。

3)Glassfish

  Glassfish是Oracle 开发的官方Java EE容器,,也是同时支持Servlet和EJB,支持最新的特性,有自己的web容器,支持集群,支持热部署。

三、区别及选型:

1、区别:

  Tomcat只是一个HTTP服务器和Java servlet容器。 JBoss和GlassFish是完整的Java EE应用程序服务器,包括EJB容器和该堆栈的所有其他功能。

另一方面,Tomcat具有更轻的内存占用(约60-70 MB),而那些Java EE服务器的权重在几百兆。 Tomcat对于简单的Web应用程序或使用诸如Spring

之类的不需要完整Java EE服务器的框架的应用程序非常流行。管理Tomcat服务器可以说是更容易,因为有较少的移动部件。

但是,对于确实需要完整的Java EE堆栈(或至少更多的部分,可以轻松地固定到Tomcat)的应用程序... JBoss和GlassFish是两个最流行的开源产品

(第三个是Apache Geronimo ,在其上构建IBM WebSphere的免费版本)。 JBoss有一个更大和更深的用户社区,和一个更成熟的代码库。

但是,JBoss在实现当前Java EE规范方面远远落后于GlassFish。此外,对于那些喜欢基于GUI的管理系统... GlassFish的管理控制台是非常光滑,

而大多数管理在JBoss是通过命令行和文本编辑器。 GlassFish直接来自Sun / Oracle,具有所有的优点。 JBoss不受Sun / Oracle的控制,具有所有可以提供的优点。

原版英文:http://*.com/questions/3821640/what-is-the-difference-between-tomcat-jboss-and-glassfish

Tomcat is merely an HTTP server and Java servlet container. JBoss and GlassFish are full-blown Java EE application servers, including an EJB container

and all the other features of that stack. On the other hand, Tomcat has a lighter memory footprint (~60-70 MB), while those Java EE servers weigh in at

hundreds of megs. Tomcat is very popular for simple web applications, or applications using frameworks such as Spring that do not require a full Java EE server.

Administration of a Tomcat server is arguably easier, as there are fewer moving parts.

However, for applications that do require a full Java EE stack (or at least more pieces that could easily be bolted-on to Tomcat)... JBoss and GlassFish are

two of the most popular open source offerings (the third one is Apache Geronimo, upon which the free version of IBM WebSphere is built). JBoss has a larger

and deeper user community, and a more mature codebase. However, JBoss lags significantly behind GlassFish in implementing the current Java EE specs.

Also, for those who prefer a GUI-based admin system... GlassFish's admin console is extremely slick, whereas most administration in JBoss is done with a

command-line and text editor. GlassFish comes straight from Sun/Oracle, with all the advantages that can offer. JBoss is NOT under the control of Sun/Oracle,

with all the advantages THAT can offer.

2、选型: 

  主要根据业务需求和应用规模来确定,如果仅仅是简单web应用,不需要支持EJB或者JMS等特性的,选择简单易用的Tomcat即可。

如果需要更多的J2EE个特性,比如EJB建议选择Glassfish这种全功能的服务器。

  关于JBOSS和Glassfish,建议选择Glassfish,因为官方出品,实现当前Java EE更及时。