上一节说到StandardService负责启动其子组件:container和connector,不过注意,是有先后顺序的,先启动container,再启动connector,这一节先来看看container. 目录 Pipeline和Vavle StandardEngine类和StandardHost类 StandardContext类 总结 Pipeline和Vavle 在第二节(How Tomcat works — 二.tomcat启动(1))中没有介绍关于Pipeline和Vavle,因…
上一篇,我们讲解了如果开发一个简单的Http服务器,这一篇,我们扩展一下,让我们的服务器具备servlet的解析功能. 简单介绍下Servlet接口 如果我们想要自定义一个Servlet,那么我们必须继承Servlet,并且实现下面几个重要的方法 public void init(ServletConfig config) throws ServletException public void service(ServletRequest request,ServletResponse resp…
主要介绍tomcat启动涉及到的一些接口和类. 目录 概述 tomcat包含的组件 server和service Lifecycle Container Connector 总结 概述 tomcat作为一个服务器,它的主要功能就是接收请求——处理请求——返回,如果是我们自己实现一个最简单的服务器,启动一个线程监听某个端口,该端口有数据进来的话就接收数据,然后在启动一个线程去处理接收到的数据并返回.那么启动一个服务器最重要的就是启动一个线程监听某个端口,tomcat也是,只不过tomcat包含很多…
目录 什么叫发布 webapp发布方式 reload 总结 什么叫发布 发布就是让tomcat知道我们的程序在哪里,并根据我们的配置创建Context,进行初始化.启动,如下: 程序所在的位置 创建Context,添加到Host 初始化(创建解析webxml的digester) 启动(初始化filter.listener.servlet) webapp发布方式 在tomcat 中发布webapp的方式不同会导致app启动的先后顺序不一样(这里按照启动顺序或者时机不同进行划分): 在xml中配置,…
tomcat已经启动完成了,那么是怎么处理请求的呢?怎么到了我们所写的servlet的呢? 目录 Http11ConnectionHandler Http11Processor CoyoteAdapter StandardEngineValve StandardWrapperValve 总结 Http11ConnectionHandler 在tomcat 启动之后会使用socket.accept接收请求,接收到之后会调用自己的processSocket来处理请求,在该方法中启动一个SocketP…
前面摆了三节的姿势,现在终于要看到最终tomcat监听端口,接收请求了. 目录 Connector Http11Protocol JIoEndpoint 总结 在前面的初始化都完成之后,进行Connector的初始化,也是执行一些生命周期方法. Connector 在启动过程中这个类的主要作用是初始化并启动CoyoteAdapter和Http11Protocol: initInternal 新建一个CoyoteAdapter,并调用protocolHandler.setAdapter方法设置ad…
在使用shiro的session的时候感觉对于tomcat中session的管理还不是特别清楚,而且session管理作为tomcat中比较重要的一部分还是很有必要学习的. 目录 概述 session的作用 session新建.查找和更新 session删除 总结 概述 在tomcatsession管理的类标准实现为StandardManager,主要作用为启动的是加载缓存的session,类关系如下: 在用户servlet中使用的session为StandardSessionFacade(也是…
在了解了tomcat 的一些基本组件之后,学习启动过程就更容易理解了,因为启动过程就是启动各个组件. 目录 启动顺序 Bootstrap类 Catalina类 StandardServer类和StandardService类 总结 启动顺序 tomcat的启动主要是容器的启动,根据tomcat四层架构,启动时由上而下的,而service包含这些组件,service又包含在server里面,启动顺序如下: Bootstrap类 整个tomcat程序的入口——main函数,主要作用就是找到CATAL…
How tomcat works (5)servlet容器阅读笔记 第四章阅读了tomcat默认连接器的实现,当时connector中的使用的容器是自定义的容器,也是非常之简单奥,一个人就干完了所有的活,完成了初始化类加载器,加载servlet,调用servlet的service方法等的活儿,秉承了专事专干的也就是模块化设计的理念,这样的设计肯定是不够灵活的,这一章就来看看tomcat中的容器是如何设计的 总体介绍 总的来说呢,tomcat将容器分为了四类: Engine:表示整个Catalin…
1.servlet容器 ·servlet容器为javaweb应用提供运行时环境,负责管理servlet和jsp的生命周期以及管理它们的共享数据 ·servlet容器中的文件目录结构 ·tomcat是一个开源的servlet容器 1)安装和部署tomcat 配置环境变量java_home,双击bin中的startup.bat运行,浏览器中输入localhost:8080 2)在cmd中运行 首先需要创建环境变量 启动命令:catalina start/run 关闭命令:catalina stop…