Web服務器(Apache)與Servlet容器(Tomcat)

根據Servlet容器工作模式的不同,可以將Servlet容器分爲以下三類:

1)獨立的Servlet容器
當我們使用基於Java技術的Web服務器時,Servlet容器作爲構成Web服務器的一部分而存在。然而大多數的Web服務器並非基於Java,因此,就有了下面兩種Servlet容器的工作模式。

2)進程內的Servlet容器
Servlet容器由Web服務器插件和Java容器兩部分的實現組成。Web服務器插件在某個Web服務器內部地址空間中打開一個 JVM(Java虛擬機),使得Java容器可以在此JVM中加載並運行Servlet。如有客戶端調用Servlet的請求到來,插件取得對此請求的控 制並將它傳遞(使用JNI技術)給Java容器,然後由Java容器將此請求交由Servlet進行處理。進程內的Servlet容器對於單進程、多線程 的服務器非常適合,提供了較高的運行速度,但伸縮性有所不足。

3)進程外的Servlet容器
Servlet容器運行於Web服務器之外的地址空間,它也是由Web服務器插件和Java容器兩部分的實現組成的。Web服務器插件和Java容 器(在外部JVM中運行)使用IPC機制(通常是TCP/IP)進行通信。當一個調用Servlet的請求到達時,插件取得對此請求的控制並將其傳遞(使 用IPC機制)給Java容器。進程外Servlet容器對客戶請求的響應速度不如進程內的Servlet容器,但進程外容器具有更好的伸縮性和穩定性。

Tomcat
學習Servlet技術,就需要有一個Servlet運行環境,也就是需要有一個Servlet容器,本文用的是Tomcat。

Tomcat是一個免費的開放源代碼的Servlet容器,它是Apache軟件基金會(Apache Software Foundation)的一個頂級項目,由Apache、Sun和其他一些公司及個人共同開發而成。由於有了Sun的參與和支持,最新的Servlet和 JSP規範總是能在Tomcat中得到體現,Tomcat 6支持最新的Servlet 2.5和JSP 2.1規範。因爲Tomcat技術先進、性能穩定,而且免費,因而深受Java愛好者的喜愛,並得到了部分軟件開發商的認可,成爲目前比較流行的Web服 務器。

Tomcat和IIS、Apache等Web服務器一樣,具有處理HTML頁面的功能,另外它還是一個Servlet和JSP容器,獨立的 Servlet容器是Tomcat的默認模式。不過,Tomcat處理靜態HTML的能力不如Apache,我們可以將Apache和Tomcat集成在 一起使用,Apache作爲HTTP Web服務器,Tomcat作爲Web容器。

apache-tomcat服務器
這裏兩者的定位:Apache是HTTP Web服務器,Tomcat是Web容器。

對於這個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。

Tomcat接受客戶請求並做出響應的過程如下:

1)客戶端(通常都是瀏覽器)訪問Web服務器,發送HTTP請求。
2)Web服務器接收到請求後,傳遞給Servlet容器。
3)Servlet容器加載Servlet,產生Servlet實例後,向其傳遞表示請求和響應的對象。
4)Servlet實例使用請求對象得到客戶端的請求信息,然後進行相應的處理。
5)Servlet實例將處理結果通過響應對象發送回客戶端,容器負責確保響應正確送出,同時將控制返回給Web服務器。

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章