Tomcat Jboss Glassfish 三種常見web容器比較

1、原因:

  新公司平臺是純Java架構,有用到Java Web(JSP)、Java 業務(EJB)、Nginx、、Websphere MQ、Mysql這樣。你們知道java是跑在容器裏的,java

這裏的業務要用到EJB故選用了Glassfish容器。web

  EJB是什麼?EJB是一個服務器端的組件模型,能夠部署分佈式應用程序。J2EE規範這麼說:Enterprise Java Bean (EJB )組件是運行在服務器端的業務組件;sql

另外Java Servlet和Java Server Pages(JSP)是運行在服務端的web組件。數據庫

  那麼常見的web容器(應用服務器)又有什麼區別呢?下面慢慢道來。
tomcat

2、詳解:

一、Web容器服務器

  Web容器是一種服務調用的規範,J2EE運用了大量的容器和組件技術來構建分層的企業應用。在J2EE規範中,相應的有Web Container和EJB Container等。架構

  Web容器給處於其中的應用程序組件(JSP、Servlet)提供環境,JSP、Servlet直接與容器中的環境變量打交道,而沒必要關注其餘系統問題。app

  Web容器更多的是與HTTP的請求打交道,而EJB容器不是,它更多的是跟數據庫其餘服務打交道。負載均衡

 

二、Web服務器框架

  Web服務器能夠處理HTTP協議,當Web服務器收到一個HTTP請求,就會返回一個HTTP響應。

  Web服務器能夠針對靜態頁面或者圖片的請求進行跳轉,或者把動態響應委託給其餘一些程序,如CGI、JSP、Servlet、ASP、JavaScript或者其餘服務端技術。

  Web服務器僅僅提供一個可執行服務器端環境和返回響應的環境,不涉及其餘技術。

1)Apache

  是簡單的HTTP服務器,速度快,在大型網站中,常與應用服務器配合部署,僅支持靜態頁面。

2)Nginx

  是著名的HTTP服務器,速度快,支持負載均衡。

 

三、應用程序服務器(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容器,支持集羣,支持熱部署。

 

3、區別及選型:

一、區別:

  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://stackoverflow.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.

二、選型: 

  主要根據業務需求和應用規模來肯定,若是僅僅是簡單web應用,不須要支持EJB或者JMS等特性的,選擇簡單易用的Tomcat便可。

若是須要更多的J2EE個特性,好比EJB建議選擇Glassfish這種全功能的服務器。

  關於JBOSS和Glassfish,建議選擇Glassfish,由於官方出品,實現當前Java EE更及時。

相關文章
相關標籤/搜索