制作专业网站,建企业门户网站,wordpress建站页面,学校网站风格Tomcat的核心组件
Tomcat将请求器和处理器分离#xff0c;使用多种请求器支持不同的网络协议#xff0c;而处理器只有一个。从而网络协议和容器解耦。
Tomcat的容器
Host#xff1a;Tomcat提供多个域名的服务#xff0c;其将每个域名都视为一个虚拟的主机#xff0c;在…Tomcat的核心组件
Tomcat将请求器和处理器分离使用多种请求器支持不同的网络协议而处理器只有一个。从而网络协议和容器解耦。
Tomcat的容器
HostTomcat提供多个域名的服务其将每个域名都视为一个虚拟的主机在每个虚拟主机下包含多个web应用。 Context一个应用的上下文。一个虚拟主机域名下可以有多个应用。 WrapperServlet的包装类。 Tomcat使用责任链来实现客户端的请求处理。
Pipeline和Value
EngineHostContextWrapper共用一个pipeline实例各自在自己的层面上又都实现了独属于自己的Value处理器。 责任链模式Tomcat使用责任链模式将请求处理流程划分为一系列阶段。每个阶段由相应组件的管道负责形成一个责任链。当一个请求到达时它会依次经过责任链中的每个阶段每个阶段都有机会对请求进行处理。 各组件的处理阶段每个组件Engine、Host、Context、Wrapper的管道定义了它们感兴趣的处理阶段并在相应的阶段中执行特定的逻辑。这样每个组件都能够在请求处理过程的不同阶段执行自己的操作。 共享的Pipeline尽管整个请求处理流程共用一个管道但在责任链的每个阶段可以通过判断当前处理的组件来确定是否执行该组件的处理逻辑。这样每个组件在其关心的阶段会执行相应的操作而在其他阶段则会跳过。 在Connector启动后Endpoint会启动线程来监听服务器端口并且在接收到请求后调用Processor来进行数据读取。
Mapper和MapperListener
当Processor读取到客户端请求后会按照请求地址映射到相应的容器处理。 Mapper用于按照映射规则查找容器MapperListener用于监听容器变化当容器卸载或者注册会变更容器信息。 Tomcat的请求处理
应用服务器的请求处理开始于监听socket端口接收到的命令结束于将服务器的处理结果写入socket输出流。 Connector将请求按照既定协议读取并且将其封装为与协议无关的对象通过Mapper映射给处理的Servlet进行处理Servlet生成处理结果并且将其写入socket输出流中。 Engine,Host,Context共用一个pipeline执行的也是一个pipeline只不过value包含有其归属的属性执行Engine的pipeline时只执行属于Engine的value 执行流程
Endpoint的socket监听到消息接收消息Process处理消息封装对象Mapper根据请求地址将消息对象传递给对应容器Engine执行其pipeline中的valueHost执行其pipeline中的valueContext执行其pipeline中的valuewrapper执行其pipeline中的valuefilterchain执行过滤器交给servlet处理