Tomcat结构:


server

 |

   service(s) -- 一个server可以有多个service

 |

 connector(s) container

     |

   Engine

     |

    Host(s)

     |

   Context(s)

     |

   Wrapper(s)

最外层是server,server是service集合,每个service由一个container和一个或者多个connector组成,

container是容器的父接口,有4种实现Engine,Host,Context,Wrapper,它们是父子关系


功能介绍:


Server:

Server 要完成的任务很简单,就是要能够提供一个接口让其它程序能够访问到这个 Service 集合、同时要维护它所包含的所有 Service 的生命周期,

包括如何初始化、如何结束服务、如何找到别人要访问的 Service


Service:

Service 只是在 Connector 和 Container 外面多包一层,把它们组装在一起,向外面提供服务


Connector:

它的主要任务是负责接收浏览器的发过来的 tcp 连接请求,创建一个 Request 和 Response 对象分别用于和请求端交换数据,

然后会产生一个线程来处理这个请求并把产生的 Request 和 Response 对象传给处理这个请求的线程


Container:

对Connector传递过来的Request,Response做具体的处理


Engine:

Engine 容器比较简单,它只定义了一些基本的关联关系


Host:

一个 Host 在 Engine 中代表一个虚拟主机,这个虚拟主机的作用就是运行多个应用,它负责安装和展开这些应用,并且标识这个应用以便能够区分它们

Engine Host Context Wrapper:


Context、Wrapper:

Context 代表 Servlet 的 Context,它具备了 Servlet 运行的基本环境

Context 最重要的功能就是管理它里面的 Servlet 实例,Servlet 实例在 Context 中是以 Wrapper 出现的


Context对应的是项目、Wrapper对应的是具体的Servlet




Tomcat的配置文件


了解了 Tomcat结构 就很容易理解 Tomcat的配置文件了

配置文件的结构跟结构是一一对应的关系


server.xml 配置了 service connector Engine Host


context的配置被单独放在了 context.xml文件中


而 Wrapper的配置就是在项目的web.xml文件中了 Tomcat也给出了通用的web.xml (对所有的项目都起作用)


context对应对应项目 


这也是为什么 项目层面的一些设置都要放在context.xml中了


举个具体的例子 


配置 项目的访问路径 果断的放在了context.xml文件中配置了