一个tomcat实例或者服务是tomcat容器分层架构中最高级别的组件。一个虚拟机中只允许存在一个tomcat实例。这样做确保了其他运行在同一个物理机上tomcat服务器里的应用程序的安全,以防tomcat或者虚拟机宕机。
当然,你可以在物理机中运行多个实例,但是你必须把java进程分别运行于各个不同的网络端口。
Tomcat实例由一组应用程序容器组成,他们具有良好的组织分层。分层中的核心组件是Catalina servlet engine. Catalina实际上是一个实现了Java Servlet API的java servlet 容器。
下面这个XML表示的是tomcat容器之间的关系。
<Server> <Service> <Connector /> <Engine> <Host> <Context> </Context> </Host> </Engine> </Service> </Server> |
一个Server由1至多个Service组成,每个service又由1-n个connector及单个Engine组成,Engine则由Host组成,Host最终配置了web目录。如下图
也就是说,一个tomcat实例可以被分割成一组容器,包括Server, Service, Connector, engine ,host, Context.默认情况下,这些内容被配置在tomcat/conf/server.xml中。Connector用于处理客户端request/response请求。Engine接收所有来自父Service里的Connector的request。