Tomcat是一個免費的開源的Serlvet容器它是Apache基金會的Jakarta項目中的一個核心項目由ApacheSun和其它一些公司及個人共同開發而成由於有了Sun的參與和支持最新的Servlet和Jsp規范總能在Tomcat中得到體現
Tomcat不僅僅是一個Servlet容器它也具有傳統的Web服務器的功能處理Html頁面但是與Apache相比它的處理靜態Html的能力就不如Apache我們可以將Tomcat和Apache集成到一塊讓Apache處理靜態Html而Tomcat處理Jsp和Servlet這種集成只需要修改一下Apache和Tomcat的配置文件即可
apache是一個web服務器程序可以作為web服務器使用不過只支持靜態網頁 但是如asp php cgi jsp等動態網頁的就不行如果要在APACHE環境下運行jsp 的話就需要一個解釋器來執行jsp網頁而這個jsp解釋器就是TOMCAT
概括來說tomcat和apache都可以作為web服務器來使用也就是單獨作為一個web服務器httpd完成http服務的請求與響應但是除此之外tomcat除了可以處理html頁面以外還可以作為servelt容器來解析jsp頁面和servlet但是Apache服務器則只能處理html頁面也就是說它僅僅完成一個web服務器的作用如果要完成其他功能比如運行phpjsp頁面則要另外集成相應的web容器
同是作為web服務器僅僅處理html頁面時Apache服務器的性能比tomcat要好因此常常將兩者結合一般來說大的站點都是將Tomcat與Apache的結合Apache負責接受所有來自客戶端的HTTP請求然後將Servlets和JSP的請求轉發給Tomcat來處理Tomcat完成處理後將響應傳回給Apache最後Apache將響應返回給客戶端
Web服務器(Web Server)
Web服務器可以解析(handles)HTTP協議當Web服務器接收到一個HTTP請求(request)會返回一個HTTP響應(response)例如送回一個HTML頁面為了處理一個請求(request)Web服務器可以響應(response)一個靜態頁面或圖片進行頁面跳轉(redirect)或者把動態響應(dynamic response)的產生委托(delegate)給一些其它的程序例如CGI腳本JSP(JavaServer Pages)腳本servletsASP(Active Server Pages)腳本服務器端(serverside)JavaScript或者一些其它的服務器端(serverside)技術無論它們(譯者注腳本)的目的如何這些服務器端(serverside)的程序通常產生一個HTML的響應(response)來讓浏覽器可以浏覽
要知道Web服務器的代理模型(delegation model)非常簡單當一個請求(request)被送到Web服務器裡來時它只單純的把請求(request)傳遞給可以很好的處理請求(request)的程序(譯者注服務器端腳本)Web服務器僅僅提供一個可以執行服務器端(serverside)程序和返回(程序所產生的)響應(response)的環境而不會超出職能范圍服務器端(serverside)程序通常具有事務處理(transaction processing)數據庫連接(database connectivity)和消息(messaging)等功能
雖然Web服務器不支持事務處理或數據庫連接池但它可以配置(employ)各種策略(strategies)來實現容錯性(fault tolerance)和可擴展性(scalability)例如負載平衡(load balancing)緩沖(caching)集群特征(clustering—features)經常被誤認為僅僅是應用程序服務器專有的特征
應用程序服務器(The Application Server)
根據我們的定義作為應用程序服務器它通過各種協議可以包括HTTP把商業邏輯暴露給(expose)客戶端應用程序Web服務器主要是處理向浏覽器發送HTML以供浏覽而應用程序服務器提供訪問商業邏輯的途徑以供客戶端應用程序使用應用程序使用此商業邏輯就象你調用對象的一個方法(或過程語言中的一個函數)一樣
應用程序服務器的客戶端(包含有圖形用戶界面(GUI)的)可能會運行在一台PC一個Web服務器或者甚至是其它的應用程序服務器上在應用程序服務器與其客戶端之間來回穿梭(traveling)的信息不僅僅局限於簡單的顯示標記相反這種信息就是程序邏輯(program logic) 正是由於這種邏輯取得了(takes)數據和方法調用(calls)的形式而不是靜態HTML所以客戶端才可以隨心所欲的使用這種被暴露的商業邏輯
在大多數情形下應用程序服務器是通過組件(component)的應用程序接口(API)把商業邏輯暴露(expose)(給客戶端應用程序)的例如基於JEE(Java Platform Enterprise Edition)應用程序服務器的EJB(Enterprise JavaBean)組件模型此外應用程序服務器可以管理自己的資源例如看大門的工作(gatekeeping duties)包括安全(security)事務處理(transaction processing)資源池(resource pooling) 和消息(messaging)就象Web服務器一樣應用程序服務器配置了多種可擴展(scalability)和容錯(fault tolerance)技術
警告(Caveats)
現在XML Web Services已經使應用程序服務器和Web服務器的界線混淆了通過傳送一個XML有效載荷(payload)給服務器Web服務器現在可以處理數據和響應(response)的能力與以前的應用程序服務器同樣多了
另外現在大多數應用程序服務器也包含了Web服務器這就意味著可以把Web服務器當作是應用程序服務器的一個子集(subset)雖然應用程序服務器包含了Web服務器的功能但是開發者很少把應用程序服務器部署(deploy)成這種功能(capacity)(譯者注這種功能是指既有應用程序服務器的功能又有Web服務器的功能)相反如果需要他們通常會把Web服務器獨立配置和應用程序服務器一前一後這種功能的分離有助於提高性能(簡單的Web請求(request)就不會影響應用程序服務器了)分開配置(專門的Web服務器集群(clustering)等等)而且給最佳產品的選取留有余地
From:http://tw.wingwit.com/Article/program/Java/hx/201311/26500.html