1. 程式人生 > >淺析Tomcat、JBOSS、WebSphere、WebLogic、Apache

淺析Tomcat、JBOSS、WebSphere、WebLogic、Apache

做任何web專案,都離不開伺服器,有錢的公司用WebSphere、WebLogic,沒錢公司用nginx+tomcat,不要小瞧nginx+tomcat麻雀雖小,五臟俱全。

      伺服器的知識,在筆試、面試中會經常被問到,對於一個合格的程式設計師,在豐富自己的程式設計知識外,也要儘可能多的瞭解開發相關的知識來豐富自己。

      對於一個菜鳥的我來說,僅用過tomcat和Apache。而我在實際開發工作中,僅關注程式碼一層,對於伺服器的部署和調優知之甚少。因此,最近蒐集了市面上常用的5中J2EE應用伺服器(Tomcat僅能稱得上是Servlet容器)的相關資訊,不求研究得有多深入,但也略知一二。下面來總結一下Tomcat、JBOSS、WebSphere、WebLogic、Apache這五種應用伺服器的優缺點。

      J2ee開發主要是瀏覽器和伺服器進行互動的一種結構.邏輯都是在後臺進行處理,然後再把結果傳輸回給瀏覽器。可以看出伺服器在這種架構是非常重要的。

      Tomcat:應用也算非常廣泛的web伺服器,支援部分j2ee,免費,出自apache基金組織,支援Servlet、jsp。 
      JBoss:開源的應用伺服器,比較受人喜愛,免費(文件要收費)   
      Weblogic與Websphere:應該說算是業界第一的app  server,全部支援j2ee1.4,  對於開發者,有免費使用一年的許可證。

      Apache:全球應用最廣泛的http伺服器,免費,出自apache基金組織,可以作為web伺服器使用。不過只支援靜態網頁,如(asp,php,cgi,jsp)等動態網頁無法支援。  

      Tomcat、JBOSS、WebSphere、WebLogic、Apache,都是web伺服器,有什麼區別和聯絡呢?

    (一)Tomcat

Tomcat伺服器是一個免費的開源的Web應用伺服器,是Apache軟體基金會的Jakarta專案中的一個核心專案,由Apache、Sun和其他一些公司及個人共同開發而成。由於有了Sun的參與和支援,最新的Servlet和JSP規範總是能在Tomcat中得到體現,Tomcat 5支援最新的Servlet2.4和JSP 2.0規範。因為Tomcat技術先進、效能穩定,執行時佔用的系統資源小,擴充套件性好,支援負載平衡與郵件服務等開發應用系統常用的功能;而且很重要的是她免費,因而深受Java愛好者的喜愛並得到了部分軟體開發商的認可,成為目前比較流行的Web應用伺服器。而且由於開源,它還在不斷的改進和完善中,任何一個感興趣的程式設計師都可以更改它或在其中加入新的功能。
      Tomcat 很受廣大程式設計師的喜歡,因為它執行時佔用的系統資源小,擴充套件性好,支援負載平衡與郵件服務等開發應用系統常用的功能;而且它還在不斷的改進和完善中,任何一個感興趣的程式設計師都可以更改它或在其中加入新的功能。 
      Tomcat 是一個小型的輕量級應用伺服器,在中小型系統和併發訪問使用者不是很多的場合下被普遍使用,是開發和除錯JSP 程式的首選。對於一個初學者來說,可以這樣認為,當在一臺機器上配置好Apache 伺服器,可利用它響應對HTML 頁面的訪問請求。實際上Tomcat 部分是Apache 伺服器的擴充套件,但它是獨立執行的,所以當你執行tomcat 時,它實際上作為一個與Apache 獨立的程序單獨執行的。 
      當配置正確時,Apache 為HTML頁面服務,而Tomcat 實際上執行JSP 頁面和Servlet。另外,Tomcat和IIS、Apache等Web伺服器一樣,具有處理HTML頁面的功能,另外它還是一個Servlet和JSP容器,獨立的Servlet容器是Tomcat的預設模式。不過,Tomcat處理靜態HTML的能力不如Apache伺服器。 
      Tomcat 最新版本是4.0x.4.0x與3.x的架構不同,而是重新設計的。Tomcat4.0x中採用了新的Servlet容器:Catalina,完整的實現了Servlet2.3和Jsp1.2規範。由於Java的跨平臺特性,基於Java的Tomcat也具有跨平臺性。 
      與傳統的桌面應用程式不同,Tomcat中的應用程式是一個WAR(Web Archive)檔案。WAR是Sun提出的一種Web應用程式格式,與JAR類似,也是許多檔案的一個壓縮包。這個包中的檔案按一定目錄結構來組織:通常其根目錄下包含有Html和Jsp檔案或者包含這兩種檔案的目錄,另外還會有一個WEB-INF目錄,這個目錄很重要。通常在WEB-INF目錄下有一個web.xml檔案和一個classes目錄,web.xml是這個應用的配置檔案,而classes目錄下則包含編譯好的Servlet類和Jsp或Servlet所依賴的其它類(如JavaBean)。通常這些所依賴的類也可以打包成JAR放到WEB-INF下的lib目錄下,當然也可以放到系統的CLASSPATH中,但那樣移植和管理起來不方便。 
     在Tomcat中,應用程式的部署很簡單,你只需將你的WAR放到Tomcat的webapp目錄下,Tomcat會自動檢測到這個檔案,並將其解壓。你在瀏覽器中訪問這個應用的Jsp時,通常第一次會很慢,因為Tomcat要將Jsp轉化為Servlet檔案,然後編譯。編譯以後,訪問將會很快。

     Tomcat不僅僅是一個Servlet容器,它也具有傳統的Web伺服器的功能:處理Html頁面。但是與Apache相比,它的處理靜態Html的能力就不如Apache.我們可以將Tomcat和Apache整合到一塊,讓Apache處理靜態Html,而Tomcat處理Jsp和Servlet.這種整合只需要修改一下Apache和Tomcat的配置檔案即可。 
     在Tomcat4中,你還可以利用Servlet2.3提供的事件監聽器功能,來對你的應用或者Session實行監聽。Tomcat也提供其它的一些特徵,如與SSL整合到一塊,實現安全傳輸。還有Tomcat也提供JNDI支援,這與那些J2EE應用伺服器提供的是一致的。

    (二)JBoss

     一個基於J2EE的開放原始碼的應用伺服器。因為JBoss程式碼遵循LGPL許可,你可以在任何商業應用中免費使用它,而不用支付費用。JBoss支援EJB 1.1和EJB 2.0 EJB3.0的規範,它是一個管理EJB的容器和伺服器。類似於Sun'sJ2SDK Enterprise Edition(J2EE),JBoss的目標是一個原始碼開放的J2EE環境。但是JBoss核心服務僅是提供EJB伺服器。JBoss不包括serverlers/JSPpage的WEB容器,當然可以和Tomcat或Jetty繫結使用。 
JBoss還具有如下六大優點: 
1、JBoss是免費的,開放原始碼J2EE的實現,它通過LGPL許可證進行釋出。 
2、JBoss需要的記憶體和硬碟空間比較小。 
3、安裝非常簡單。先解壓縮JBoss打包檔案再配置一些環境變數就可以了。 
4、JBoss能夠"熱部署",部署BEAN只是簡單拷貝BEAN的JAR檔案到部署路徑下就可以了。如果沒有載入就載入它;如果已經載入了就解除安裝掉,然後LOAD這個新的。 
5、JBoss與Web伺服器在同一個Java虛擬機器中執行,Servlet呼叫EJB不經過網路,從而大大提高執行效率,提升安全效能。 
6、使用者可以直接實施J2EE-EAR,而不是以前分別實施EJB-JAR和Web-WAR,非常方便。 

    (三) WebLogic

     WebLogic是美國bea公司(目前被Oracle收購)出品的一個application server,確切的說是一個基於Javaee架構的中介軟體,純java開發的,最新版本WebLogic Server 9.0是迄今為止釋出的最卓越的BEA應用伺服器。BEAWebLogic是用於開發、整合、部署和管理大型分散式Web應用、網路應用和資料庫應用的Java應用伺服器。將Java的動態功能和JavaEnterprise標準的安全性引入大型網路應用的開發、整合、部署和管理之中。完全遵循J2EE 1.4規範。目前weblogic在世界application server市場上佔有最大的份額
     BEAWebLogic是用於開發、整合、部署和管理大型分散式Web應用、網路應用和資料庫應用的Java應用伺服器。將Java的動態功能和JavaEnterprise標準的安全性引入大型網路應用的開發、整合、部署和管理之中。 
     BEAWebLogic Server擁有處理關鍵Web應用系統問題所需的效能、可擴充套件性和高可用性。 
     與BEA WebLogic Commerce ServerTM配合使用, BEA WebLogic Server可為部署適應性個性化電子商務應用系統提供完善的解決方案。 
     BEA WebLogic Server具有開發和部署關鍵任務電子商務Web應用系統所需的多種特色和優勢,包括: 
1)領先的標準 
    對業內多種標準的全面支援,包括EJB、JSB、JMS、JDBC、XML和WML,使Web應用系統的實施更為簡單,並且保護了投資,同時也使基於標準的解決方案的開發更加簡便。 
2)無限的可擴充套件性 
    BEA WebLogic Server以其高擴充套件的架構體系聞名於業內,包括客戶機連線的共享、資源pooling以及動態網頁和EJB元件群集。 
3)快速開發 
    憑藉對EJB和JSP的支援,以及BEA WebLogic Server 的Servlet元件架構體系,可加速投放市場速度。這些開放性標準與WebGain Studio配合時,可簡化開發,並可發揮已有的技能,迅速部署應用系統。 
4)部署更趨靈活 
    BEA WebLogic Server的特點是與領先資料庫、作業系統和Web伺服器緊密整合。 
5)關鍵任務可靠性 
    其容錯、系統管理和安全效能已經在全球數以千記的關鍵任務環境中得以驗證。 
6)體系結構 
    BEA WebLogic Server是專門為企業電子商務應用系統開發的。企業電子商務應用系統需要快速開發,並要求伺服器端元件具有良好的靈活性和安全性,同時還要支援關鍵任務所必需的擴充套件、效能、和高可用性。BEA WebLogic Server簡化了可移植及可擴充套件的應用系統的開發,併為其它應用系統和系統提供了豐富的互操作性。 
    憑藉其出色的群集技術,BEA WebLogic Server擁有最高水平的可擴充套件性和可用性。BEAWebLogic Server既實現了網頁群集,也實現了EJB元件群集,而且不需要任何專門的硬體或作業系統支援。網頁群集可以實現透明的複製、負載平衡以及表示內容容錯,如Web購物車;元件群集則處理複雜的複製、負載平衡和EJB元件容錯,以及狀態物件(如EJB實體)的恢復

     (四) WebSphere

     WebSphere是 IBM的整合軟體平臺。它包含了編寫、執行和監視全天候的工業強度的隨需應變 Web應用程式和跨平臺、跨產品解決方案所需要的整個中介軟體基礎設施,如伺服器、服務和工具。WebSphere提供了可靠、靈活和健壯的整合軟體。(太貴了,瞭解不多)

    (五)Apache

     Apache是世界使用排名第一的Web伺服器軟體。它可以執行在幾乎所有廣泛使用的計算機平臺上,由於其跨平臺和安全性被廣泛使用,是最流行的Web伺服器端軟體之一。在Apache基金會裡面Apache Server永遠會被賦予最大的支援。

    Apache支援靜態頁,Tomcat支援動態的,比如Servlet等,一般使用Apache+Tomcat的話,Apache只是作為一個轉發,對JSP的處理是由Tomcat來處理的。

    Apache可以支援PHPcgiperl,但是要使用Java的話,你需要Tomcat在Apache後臺支撐,將Java請求由Apache轉發給Tomcat處理。

     Apache是Web伺服器,Tomcat是應用(Java)伺服器,它只是一個Servlet(JSP也翻譯成Servlet)容器,可以認為是Apache的擴充套件,但是可以獨立於Apache執行。

     Apache是專門用了提供HTTP服務的,以及相關配置的(例如虛擬主機、URL轉發等等)

     Tomcat是Apache組織在符合Java EE的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:側重於HTTPServer

    Tomcat:側重於Servlet引擎,如果以Standalone方式執行,功能上與Apache等效,支援JSP,但對靜態網頁不太理想;

    Apache是Web伺服器,Tomcat是應用(Java)伺服器,它只是一個Servlet(JSP也翻譯成Servlet)容器,可以認為是Apache的擴充套件,但是可以獨立於Apache執行。

    換句話說,Apache是一輛卡車,上面可以裝一些東西如Html等。但是不能裝水,要裝水必須要有容器(桶),而這個桶也可以不放在卡車上。

 

 

     Apache+Tomcat整合的好處是: 

 

    1)如果客戶端請求的是靜態頁面,則只需要Apache伺服器響應請求;如果客戶端請求的是動態頁面,則讓Tomcat伺服器響應請求 
    2)Apache的特點是簡單、速度快、效能穩定,並可做代理伺服器來使用。本來它只用於小型或試驗Internet網路,後來逐步擴充到各種Unix系統中,尤其對Linux的支援相當完美。Apache有多種產品,可以支援SSL技術,支援多個虛擬主機。Apache是以程序為基礎的結構,程序要比執行緒消耗更多的系統開支,不太適合於多處理器環境,因此,在一個Apache Web站點擴容時,通常是增加伺服器或擴充群集節點而不是增加處理器。Apache成功之處主要在於它的原始碼開放、有一支開放的開發隊伍、支援跨平臺的應用(可以執行在幾乎所有的Unix、Windows、Linux系統平臺上)以及它的可移植性等方面。 
  幾乎所有的Linux釋出都安裝Apache作為預設配置。SuSE7.1甚至預安裝有包括各種高階模組選項的Apache,如PHP3,mod_perl和LDAP等等。使用者會驚奇地發現系統安裝成功就會有一個功能強大的Web伺服器可供選擇。雖然安裝Apache並不是非常簡單,但是如果有具有新的特性或安全補丁的Apache釋出,則下載原始碼包並編譯新的Apache是值得的。 
Apache不但具有龐大的使用者群基礎,並且有豐富的配置使用文件。Apache提供伺服器端對指令碼技術的支援,比如Perl、PHP等,Apache結合使用Apache JServ可以實現對Java servlets及JSP的支援。Apache的很多模組實現安全方面的防護:如mod_auth提供對對伺服器上資料進行適當的保護,而SSL模組則用來保護伺服器和客戶端之間的通訊安全。 
  下面我們再介紹一下Tomcat伺服器軟體,Tomcat是Sun和Apache合作做出來的JSPServer,支援Servlet2.2及JSP1.1等版本。筆者建議大家使用Tomcat,而且Tomcat未來將會取代JServ,成為Apache主要的Servlet&JSPEngine。Tomcat在設計上是以獨立的Server執行,而不像Jserv是附在Apache中,這樣就更可以發揮在servlet中,非HttpServlet的能力。Tomcat是Java程式,所以只要有JDK就可以使用,不需要考慮作業系統平臺。 

     相同點:

     五個伺服器都是基於java的基礎架構來滿足實時處理需求,不同的版本與jdk版本相容和有所不同;因為都是要和前臺互動,所以他們都基於sun公司的servlet來實現的。

     不同點:

     1.應用伺服器提供更多的J2EE特徵,如EJB,JMS,JAAS等,同時也支援Jsp和Servlet.而Tomcat則功能沒有那麼強大,它不提供EJB等支援。但如果與JBoss(一個開源的應用伺服器)整合到一塊,則可以實現J2EE的全部功能。

     2.事實上,我們的很多中小應用不需要採用EJB等技術,Jsp和Servlet已經足夠,這時如果用應用伺服器就有些浪費了。而Tomcat短小精悍,配置方便,能滿足我們的需求,這種情況下我們自然會選擇Tomcat. 

     3.Tomcat也可以與其它一些軟體整合起來實現更多的功能。如與上面提到的JBoss整合起來開發EJB,與Cocoon(Apache的另外一個專案)整合起來開發基於Xml的應用,與OpenJMS整合起來開發JMS應用
     4.價位不同:

     JBoss與Tomcat的是免費的。

     5.開源性不同:

     JBoss與Tomcat的是完全開源的,而其他兩個不是。

     6.對技術的支援:

     Tomcat不支援EJB,JBoss是實現了EJB容器,再集成了Tomcat。

    JBoss和WebLogic、WebSphere都含有Jsp和Servlet容器,也就可以做web容器。
    JBoss和WebLogic、WebSphere也都包含EJB容器,是完整的J2EE應用伺服器。

    WebLogic與WebSphere都是對業內多種標準的全面支援,包括EJB、JSB、JMS、JDBC、XML和WML,使Web應用系統的實施更為簡單,並且保護了投資,同時也使基於標準的解決方案的開發更加簡便。 

    JBoss是實現了EJB容器,同時內嵌Tomcat,處理靜態頁面Jboss的速度要比較快,可以作應用伺服器。

     7.擴充套件性的不同:

WebLogic和WebSphere都是以其高擴充套件的架構體系聞名於業內,包括客戶機連線的共享、資源 pooling以及動態網頁和EJB元件群集。

     8.WebLogic更加強大。weblogic是j2ee的應用伺服器(application server),包括ejb ,jsp,servlet,jms等等,全能型的。是商業軟體裡排名第一的容器(JSP、servlet、EJB等),並提供其他如JAVA編輯等工具,是一個綜合的開發及執行環境。

     WebLogic應該是J2EE Container(Web Container + EJB Container + XXX規範)!

     Tomcat只能算Web Container,是官方指定的JSP&Servlet容器。只實現了JSP/Servlet的相關規範,不支援EJB(硬傷啊)!不過Tomcat配合jboss和apache可以實現j2ee應用伺服器功能

       一般來說考慮stucts等架構tomcat就可以了,但如果考慮EJB的話,WebLogic是比較好的選擇。

     9.用WebLogic執行標準的java可能並不是最好的方式,WebLogic裡支援他自己的一些東西,這些東西雖然是在純java基礎上開發的,但其他工具裡都沒有。WebLogicServer憑藉其出色的群集技術,擁有處理關鍵Web應用系統問題所需的效能、可擴充套件性和高可用性。

     WebLogic Server既實現了網頁群集,也實現了EJB元件群集,而且不需要任何專門的硬體或作業系統支援。網頁群集可以實現透明的複製、負載平衡以及表示內容容錯。

     無論是網頁群集,還是元件群集,對於電子商務解決方案所要求的可擴充套件性和可用性都是至關重要的。共享的客戶機/伺服器和資料庫連線以及資料快取和EJB都增強了效能表現。這是其它Web應用系統所不具備的

所以,在擴充套件性方面WebLogic是遠遠超越了Tomcat。

     總之,在功能強大和擴充套件性和可用性等方面WLS比Tomcat好很多,但這也不能說明WLS適合每一方面,從Tomcat的使用流行度便可以看出,Tomcat雖功能有限,但也很受歡迎。其實關鍵看你要做什麼。

     Tomcat是免費開源的jsp,servlet引擎,入門級別的Web伺服器,剛入門的IT人使用Tomcat簡單易上手。而且它一個輕量級應用伺服器,最重要的是它免費,所以在中小型系統和併發訪問使用者不是很多的場合下被普遍使用,是開發和除錯JSP程式的首選。Tomcat比較輕巧,消耗資源較少。當然,專案大的時候,WLS肯定再合適不過,而且Tomcat也無法滿足太多需求,但是,WLS的費用也是不可小覷的。
---------------------
作者:Alvin家雞鴨魚的小米米
來源:CSDN
原文:https://blog.csdn.net/u013573133/article/details/23379565
版權宣告:本文為博主原創文章,轉載請附上博文連結!