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


