2013-11-15 143 views
3

我已經使用Tomcat和Jetty很長一段時間了。從我所知道的。應用程序服務器(Servlet容器)是您servlet的容器​​。而http服務器處理Http請求和響應。但我總是感覺抽象這兩個如何工作。應用服務器如何與Http服務器交互

有人可以給我一個關於Http服務器和應用服務器如何工作的高層次概述嗎?因爲我在讀書。 Grizzly它是一個NIO服務器。它是一個HTTP服務器?或應用程序服務器?

+0

我很好的答案可以在這裏找到http://www.theserverside.com/feature/Understanding-How-the-Application-Servers-Web-Container-Works,on *從Web服務器到應用服務器*部分。 –

回答

3

HTTP服務器是一個主要關心處理HTTP請求並向客戶端提供HTTP響應的組件。當然,HTTP服務器還有其他功能,例如,請求轉發,錯誤處理等等,但對於更高級別的視圖,足以瞭解HTTP服務器實現請求/響應機制。它不受任何編程語言實現的約束。

Servlet容器是實現Java的Servlet規範的組件。 Servlet主要使用Java語言來實現。它們就像HTTP服務器一樣處理請求和響應(請注意,與HTTP請求和響應相比,這些請求和響應是更高的抽象),過濾它們,鏈接它們等等。

在大多數情況下,servlet容器放在HTTP服務器後面。 HTTP服務器將HTTP請求(取決於某些URL映射規則)轉發給servlet容器。 HTTP請求/響應是servlet中高度抽象的請求/響應規範的實現之一。通過這種方式,HTTP服務器和servlet容器可以一起用於服務HTTP會話,例如,動態網頁。

應用服務器是一個更復雜的組件(通常,它封裝了一個HTTP服務器和servlet容器(如果它是一個面向Java應用程序服務器))。這樣的組件提供了實現某些給定規範的模塊,例如,由JBoss Applciation Server/WildFly實現的Java EE規範。

+0

所以我猜Tomcat和Jetty是應用服務器? – user962206

+0

Tomcat是一個servlet容器。它實現了servlet Java規範,但不是整個Java Enterprise Edition堆棧。它還包含一個Web服務器。我不能給你關於Jetty的專家細節,但他們主頁的標題是「Jetty-Servlet Engine和Http Server」:) –

+0

Servlet容器可以在沒有任何Http服務器的情況下存在嗎? – user962206