Tomcat Jboss,jetty,Apache WebLogic區別與比較(阿里面試)

Jetty和tomcat的比較

相同點:

Tomcat和Jetty都是一種Servlet引擎,他們都支持標準的servlet規範和JavaEE的規範。html

不一樣點:

架構比較
Jetty的架構比Tomcat的更爲簡單
Jetty的架構是基於Handler來實現的,主要的擴展功能均可以用Handler來實現,擴展簡單。
Tomcat的架構是基於容器設計的,進行擴展是須要了解Tomcat的總體設計結構,不易擴展。java

性能比較
Jetty和Tomcat性能方面差別不大
Jetty能夠同時處理大量鏈接並且能夠長時間保持鏈接,適合於web聊天應用等等。
Jetty的架構簡單,所以做爲服務器,Jetty能夠按需加載組件,減小不須要的組件,減小了服務器內存開銷,從而提升服務器性能。
Jetty默認採用NIO結束在處理I/O請求上更佔優點,在處理靜態資源時,性能較高nginx

少數很是繁忙;Tomcat適合處理少數很是繁忙的連接,也就是說連接生命週期短的話,Tomcat的整體性能更高。
Tomcat默認採用BIO處理I/O請求,在處理靜態資源時,性能較差。web

其它比較
Jetty的應用更加快速,修改簡單,對新的Servlet規範的支持較好。
Tomcat目前應用比較普遍,對JavaEE和Servlet的支持更加全面,不少特性會直接集成進來。數據庫

 

1. Tomcat是Apache鼎力支持的Java Web應用服務器只能作JSP和Servlet的Container,不支持EJB,因爲它優秀的穩定性以及豐富的文檔資料,普遍的使用人羣,從而在開源領域受到最普遍的青睞。­實際上Tomcat 部分是Apache 服務 器的擴展,但它是獨立運行的,因此當你運行tomcat 時,它實際上做爲一個與Apache 獨立的進 程單獨運行的。apache

 

2.Apache全球應用最普遍的http服務器,免費,出自apache基金組織.apache僅有的不足是,它自己僅提供html靜態頁面的功能,不能支持jsp、java servlet、asp等功能,瀏覽器

但經過同其餘應用服務器一塊兒工做或添加插件來支持。(穩定高效,一般須要與其餘服務器軟件或插件協同工做)tomcat

 

3. Jboss做爲Java EE應用服務器它不可是Servlet容器,並且是EJB容器(同時支持EJB的優化版tomcat),是完整的J2EE容器從而受到企業級開發人員的歡迎,從而彌補了Tomcat只是一個Servlet容器的缺憾。­安全

 

4.BEA WebLogic Server是專門爲企業電子商務應用系統開發的它不可是Servlet容器,並且是EJB容器(同時支持EJB的優化版tomcat),是完整的J2EE容器, 企業電子商務應用系統須要快速開發,並要求服務器端組件具備良好的靈活性和安全性,服務器

同時還要支持關鍵任務所必需的擴展、性 能、和高可用性。BEA WebLogic Server簡化了可移植及可擴展的應用系統的開發,併爲其它應用 系統和系統提供了豐富的互操做性。

是weblogic不是一款開源的軟件,雖然存在免費試用等,但它主要的應用目標爲大型商業應用,而這種應用須要高額的license費用

 

5.resin:resin是Caucho公司的產品。resin最突出的是它的性能很是高效,連html頁面的效率也直追apache;支持 servlet/jsp,EJB。雖然resin是開源的,不過有兩種lisence:GPL和商用lisence,

能夠在GPL下無償使用,但注意商用 的是要交錢的。(高效全功能的輕型服務器軟件)

6.websphere:websphere是IBM旗下的一款應用服務器軟件。與weblogic類似,同爲商業軟件,同具備穩定、高效,支持多種應 用……。也是須要高額的費用,適於大型商業應用;有Community Edition版本,是開源的。

(若是有IBM其餘配套產品,大型商用考慮使用)

 

搭配: 
1. 若是僅須要展現html頁面,而不要其餘功能,apache; 
2. 若是是在開發時使用或者是通常小型應用,須要支持jsp/servlet,而又不須要EJB的,tomcat; 
3. 須要支持jsp/servlet,不須要EJB,有但願提升服務器的效率和穩定性的,apache+tomcat; 
4. 須要支持jsp/servlet/EJB,而又想免費的,apache+jboss(包含tomcat的版本); 
5. 須要支持jsp/servlet/EJB,又能夠花點小錢的,resin(實在認爲有必要,能夠考慮resin+apache); 
6. 大型商用,能夠支付較高費用,weblogic(websphere可選); 
7. 大型商用,能夠支付較高費用,且有其餘IBM相關功能服務的,websphere。

若是對J2EE 包含了 JSF 和EJB 就是標準的javaSE和企業版EJB

 

    EJB從咱們一開始沒怎麼接觸J2EE的時候就開始據說了,據說他是一個容器,據說他很高大上,可是對於咱們這種java菜小鳥來講真的聽不懂呀,這段時間通過個人普遍蒐集資料,算是把他的基本定義和基本使用方式知道的差很少了。

      咱們都知道咱們這部分學習的是J2EE,以前學習過J2SE,那麼構建知識網的原則咱們知道咱們須要映射,知道他們之間的相同點和不一樣點,咱們前期在學習J2SE的時候使用到了CMD而咱們學習J2EE的時候卻沒有說使用CMD,能夠說J2SE是J2EE的一部分,J2EE適用範圍更廣,它能夠當作在J2SE的平臺上加上了無數的組件,才構成了他如今的功能!而咱們此次的主角EJB就是這樣的一個組件容器,咱們之前接觸過ITOO的框架咱們將咱們的工程分爲三層表現層、業務邏輯層和數據層,而咱們的EJB就是至關於業務邏輯層,土體的他的位置,請見下圖:

 

      視圖層或表現層:提供用戶界面;接收用戶輸入;數據輸出。WEB應用的狀況,JSP以及SERVLET屬於視圖層組件。
      業務邏輯層:實際的業務邏輯處理。根據視圖層傳送過來的數據,進行實際的業務邏輯處理(包括數據庫的查詢,更新等),再把處理後的結果返回給視圖層。EJB,以及不使用EJB的狀況下擔當業務邏輯處理部分的JavaBean等歸屬於業務邏輯層組件。
    數據庫層或數據持久化層:多指用於保存業務數據的數據庫,也能夠是文件等等。
    EJB屬於J2EE體系結構中的業務邏輯層部分。

     

    SessionBean
    主要負責業務邏輯的處理。根據處理時的狀態保持與否,SessionBean又被分爲:
    Stateful SessionBean(有狀態SessionBean)

    Stateless Bean(無狀態SessionBean)對象的「狀態」是指對象的屬性值,也就是對象所攜帶的數據。Stateful SessionBean能維持會話的狀態,就是說能爲同一客戶端保持上一回被調用時的狀態,相似於HttpSession;而Stateless SessionBean則不能維持會話狀態,也就是說,對Stateless SessionBean來講,每一個方法都是獨立的,由於對特定客戶端不保持會話狀態,因此通常也不在Stateless SessionBean裏定義成員變量。
EntityBean
       負責數據庫的訪問。一般由SessionBean調用。EntityBean的一個實例所表示的數據一般表明了關係數據庫中特定表的特定的一行數據。EJB3開始,EntityBean部分的功能能夠經過JPA來實現。
EntityBean的做用:
1,對數據庫的操做:查詢,數據的更新,刪除等
2,數據庫表數據的攜帶
根據對數據庫操做(持久化)的不一樣,EntityBean分爲如下2種類型:
1,BMP (Bean-managed persistence:bean管理持久化):持久化操做(數據庫的訪問,數據的建立,更新,刪除等)由EntityBean的實現(javax.ejb.EntityBean的實現類)自身完成。
2,CMP (Container-managed persistence:容器管理持久化):持久化操做由容器根據deploy時的配置信息(ejb-jar.xml)自動完成。
MDB (message-driven bean:消息驅動bean)
      MDB主要用來處理異步消息。客戶端調用SessionBean,EntityBean的方法時,會一直處於等待狀態,直到被調用的方法處理完畢。但使用MDB,客戶端向容器發送一個JMS消息以後,沒必要等待MDB處理完畢即可直接返回。JMS被髮送給由容器管理的JMS消息隊列,容器在適當的時候通知MDB的callback方法onMessage加以處理。一個MDB須要實現javax.jms.MessageListener接口與javax.ejb.MessageDrivenBean接口。

平時咱們常常看到各類容器名稱:Servlet容器、WEB容器、Java WEB容器、Java EE容器等,還有各類服務器名稱:應用服務器、WEB服務器、WEB應用服務器、Java WEB應用服務器、Java EE服務器等,這麼多類似名稱,難以弄明白它們之間的區別與聯繫。

       下面咱們嘗試從它們的定義中,區分它們,找出他們之間的聯繫,最後經過Apache、nginx、tomcat等舉例說明容器以及服務器的聯繫。

一、容器與服務器的聯繫

       如上圖,咱們先來看下容器與服務器的聯繫:容器是位於應用程序/組件和服務器平臺之間的接口集合,使得應用程序/組件能夠方便部署到服務器上運行。

二、各類容器的區別/聯繫

2-一、容器(Containers)

       容器一般理解就是裝東西的,咱們這裏說技術上的容器就是能夠部署應用程序,並在上面運行的環境。

       通常來講,它處理屏蔽了服務器平臺的複雜性,使得應用程序在它的基礎上能夠方便快捷的部署;而對於應用程序來講,它就是位於應用程序和平臺之間的接口集合。

       容器管理組件的生命週期,嚮應用程序組件分派請求,並提供與上下文數據(如關於當前請求的信息)的接口。

       注意,容器技術虛擬化(如Docker 應用容器引擎)不在本文關注範圍內。

2-二、Servlet容器

       Servlet:屬於Java EE重要技術規範,構建了"接收請求--調用servlet程序處理--返回響應"基本模型。

       Servlet程序:Java提供了開發Servlet程序的API,該API能夠說Servlet容器的一部分,它對接應用程序與Servlet容器;

       Servlet容器:就是實現了Servlet技術規範的部署環境,它能夠部署運行Servlet程序。

2-三、Java WEB容器

       WEB容器:能夠部署多個WEB應用程序的環境。

       Java WEB容器:實現了Java EE規定的WEB應用技術規範的的部署環境。

       Java EE WEB應用技術規範:Servlet、JSP(JavaServer Pages)、Java WebSocket等。

       因此,完整的Java WEB容器包含Servlet容器。

2-四、Java EE容器

       Java EE容器:實現了Java EE技術規範的部署環境。

       Java EE技術規範:除了上面說的Servlet、JSP等Java EE WEB應用技術規範,還包括EJB(Enterprise JavaBeans)等許多技術規範。

       因此,完整的Java EE容器包含Java WEB容器(Servlet容器)、EJB容器等。

 Apache與Tomcat 區別:

二者定位:Apache是HTTP Web服務器,Tomcat是Web容器。

有一個很是形象的比喻:Apache是一輛車,能夠裝載靜態的物件(HTML靜態網頁等);但不能裝動態的水(JSP、CGI等),要裝水就須要桶(容器),固然桶也能夠不放在車上而單獨存放,則該容器即爲Tomcat。

二者的主要區別:

  • Apache是世界上最流行的Web服務器(其次是微軟的IIS),能夠處理瀏覽器的HTTP請求,默認端口爲80;Tomcat是運行在Apache之上的應用服務器,爲客戶端提供能夠調用的方法。Tomcat是一個Servlet容器(能夠認爲Apache的擴展),可獨立運行。
  • Apache只支持HTML等靜態普通網頁,能夠單向連通Tomcat(Apache能夠訪問Tomcat的資源,反之否則);Tomcat是Servlet容器,能夠支持JSP、PHP和CGI等,其中CGI是公共網關接口,能夠用Perl編寫CGI腳本。
  • Apache側重於HTTP Server;Tomcat側重於Servlet引擎。

二者能夠整合:當客戶端須要請求靜態資源,只須要Apache服務器響應請求;當客戶端須要動態資源,如JSP,須要Tomcat服務容器(Tomcat能夠將JSP解析爲Servlet)。因爲JSP須要JDK的數據庫驅動接口,因此通常組合是Apache+Tomcat+JDK。

兩篇介紹Apache服務網器比較好的博客:Apache與Tomcat的區別於聯繫,http://www.admin10000.com/document/974.html;web服務器apache架構與原理,http://www.cnblogs.com/fnng/archive/2012/11/08/2761713.html。

Tomcat==>web容器,包含了Servlet容器;

因爲Servlet沒有main方法,Servlet生命週期方法的調用受控於容器,即容器管理Servlet的生命週期,包括初始化(init)、服務調用(service)和銷燬(destroy),Tomcat就是一個Servlet容器。

當Web服務器獲得一個Servlet請求時,並非直接將請求提交給Servlet,而是轉交給部署該Servlet的Web容器(Tomcat),由容器向Servlet提供HTTP請求和響應,並由容器調用Servlet的方法,如doGet()和doPost()。更詳細的容器處理請求和響應過程,後邊再整理。

 

 參考:Web服務器(Apache)與Servlet容器(Tomcat)

參考:J2EE總結之EJB總結

參考:Tomcat Jboss Apache WebLogic區別與比較

參考:各類容器與服務器的區別與聯繫:Servlet容器 WEB容器 Java EE容器 應用服務器 WEB服務器 Java EE服務器

相關文章
相關標籤/搜索