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服务器)。