容器、應用服務器和web服務器的區別


什么是容器

servlet沒main()方法。它們受控於另一個java應用,這個java應用稱為容器(Container)
Tomcat是這樣的容器,Web服務器應用(Apache)得到一個指向servlet請求時,服務器不是把這個請求交給servlet本身,而是交給部署該servlet的容器。要由容器向servlet提供HTTP請求和響應,而且要由容器調用servlet的方法。

客戶-->請求--->Web服務器應用--->web容器應用--->servlet-------->web服務器主機

客戶<--響應<---Web服務器應用<---web容器應用<---servlet<--------web服務器主機

容器提供:

通信支持:建立serverSocket、監聽某個端口、創建流等;

生命周期管理:控制servlet生死,負責加載類、實例化和初始化servlet、調用servlet方法及使servlet實例能夠被垃圾回收;

所線程支持:容器會自動為接收的每個servlet請求創建一個新的java線程,運行完響應HTTP服務方法線程就結束。

生命方式實現安全:可以使用xml部署描述文件來配置(或修改)安全性,而不用硬編碼寫到servlet類代碼中。

JSP支持。

容器處理servlet

客戶---->http請求---->容器----->servlet

容器---> 創建 請求(HttpServletRequest)/響應(HttpServletResponse) 對象

容器--->請求--->響應--->線程(容器根據URL找到正確的servlet,為這個請求創建或分配線程,並把請求和響應對象傳遞給這個servlet線程)

容器----->servlet service()方法 service根據類型調用doGet()或doPost()方法。

doGet()生成動態頁面,並把這個頁面“塞到”響應對象的一個引用里。

線程結束,容器把響應對象轉為HTTP響應,把它發回給客戶,然后刪除請求和響應對象。

 

應用服務器和web服務器的區別

首先我們應該對應用服務器和web服務器有一個清晰的概念。所謂的應用服務器,就是提供應用的服務器,這里的應用有很多,比如java應用,ruby 應用,或者 c#應用。


那么什么是web服務器呢?就是提供了web功能的服務器,主要就是http服務,包括圖片的下載,等等一系列和web相關的。


好吧,你會問為什么我們不能直接使用應用服務器呢?應用服務器也提供了http服務,比如tomcat。
那么我們從實際出發。當你瀏覽一個網頁的時候,什么情況下你會覺得速度很慢?我們僅僅考慮頁面本身。那當然是圖片越多顯示得越慢。
好吧,我們至少認識到一點,一些靜態資源,例如圖片,會嚴重影響頁面打開的速度。當然,這僅僅是一個方面。


那么web服務器有什么用呢?web服務器一個優點就是在處理靜態信息上。例如一些靜態的html,圖片,等等其他靜態的東西

 

tomcat服務器和Apache的理解

Tomcat服務器是一個免費的開放源代碼的Web應用服務器。因為Tomcat技術先進、性能穩定且免費,所以深受Java愛好者的喜愛並得到了部分軟件開發商的認可,成為目前比較流行的Web應用服務器。

一、Tomcat與應用服務器

到目前為止,Tomcat一直被認為是Servlet/JSP API的執行器,也就所謂的Servlet容器。然而,Tomcat並不僅僅如此,它還提供了JNDI和JMX API的實現機制。盡管如此,Tomcat仍然還不能算是應用服務器,因為它不提供大多數J2EE API的支持。

很有意思的是,目前許多的應用服務器通常把Tomcat作為它們Servlet和JSP API的容器。由於Tomcat允許開發者只需通過加入一行致謝,就可以把Tomcat嵌入到它們的應用中。遺憾的是,許多商業應用服務器並沒有遵守此規則。

對於開發者來說,如果是為了尋找利用Servlet、JSP、JNDI和JMX技術來生成Java Web應用的話,選擇Tomcat是一個優秀的解決方案;但是為了尋找支持其他的J2EE API,那么尋找一個應用服務器或者把Tomcat作為應用服務器的輔助,將是一個不錯的解決方案;第三種方式是找到獨立的J2EE API實現,然后把它們跟Tomcat結合起來使用。雖然整合會帶來相關的問題,但是這種方式是最為有效的。。

二、Tomcat與Web服務器
Tomcat是提供一個支持Servlet和JSP運行的容器。Servlet和JSP能根據實時需要,產生動態網頁內容。而對於Web服務器來說, Apache僅僅支持靜態網頁,對於支持動態網頁就會顯得無能為力;Tomcat則既能為動態網頁服務,同時也能為靜態網頁提供支持。盡管它沒有通常的Web服務器快、功能也不如Web服務器豐富,但是Tomcat逐漸為支持靜態內容不斷擴充。大多數的Web服務器都是用底層語言編寫如C,利用了相應平台的特征,因此用純Java編寫的Tomcat執行速度不可能與它們相提並論。

一般來說,大的站點都是將Tomcat與Apache的結合,Apache負責接受所有來自客戶端的HTTP請求,然后將Servlets和JSP的請求轉發給Tomcat來處理。Tomcat完成處理后,將響應傳回給Apache,最后Apache將響應返回給客戶端。

我感覺  Apache服務器   解析靜態網頁的專業服務器

我們tomcat中有內置服務器來訪問Apache!但速度還是不行的

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM