1.獨立的Servlet容器
獨立的Servlet容器是Tomcat的默認模式。在這種模式下,Tomcat可以作為獨立的Java Web服務器,Servlet容器作為構成Web服務器的一部分而存在。
2.進程內的Servlet容器
Tomcat作為進程內的Servlet容器時,Servlet容器是作為Web服務器的插件和Java容器的實現。
Web服務器插件在內部地址空間打開一個JVM(Java Virtual Machine)使Java容器得以在內部運行。如有某個需要調用Servlet的請求,插件將取得對此請求的控制并將它傳遞(使用JNI)給Java容器。進程內的容器對于多線程、單線程的服務器非常適合,并且提供了很好的運行速度,只是伸縮性有所不足。
注:JNI是Java Native Interface的簡寫,它是Java本地調用接口。通過這個接口,Java程序可以和其他語言編寫的本地程序進行通信。
3.進程外的Servlet容器
Tomcat作為進程外的Servlet容器時,Servlet容器運行于Web服務器之外的地址空間,并且作為Web服務器的插件和Java容器的實現的結合。
Web服務器插件和Java容器JVM使用IPC機制(通常是TCP/IP)進行通信。當一個調用Servlet的請求到達時,插件將取得對此請求的控制并將其傳遞(使用IPC等)給Java容器,進程外容器的反應時間或進程外容器引擎不如進程內容器,但進程外容器引擎在許多其他可比的方面更好(如伸縮性、穩定性等)。
注:IPC是Interprocess Communication(進程間通信)的簡寫,它是實現進程間通信的一種技術。
Tomcat既可作為獨立的容器(主要用于開發和調試),又可以作為對現有服務器的附加(當前支持Apache、IIS和Netscape服務器)。