面包屑之tomcat

  作为一个小小的java程序员,平日里接触最多的莫过于网页了。至于网页是如何神奇的动态传输到浏览器,对此我一直是一知半解。

  是的,工具实现了一切,还有学术界的"不要重复造轮子",像一道无形的高墙让人难以逾越。

  本人极度缺乏安全感,对陌生的事物,以及对未来的迷茫,让我迫切想抓住一切真相。

  我不敢承认自己没有方向,可我又害怕停下的步伐,我就像一头被栓住的磨驴,看不到远方,只能朝着未知的终点前进。

  

  想矫情下,却没有足够的才华。哎,还是说说最近看得一本书的心得吧。

  《how tomcat works》,书如其名,一本讲tomcat是如何工作的书。看完之后,不说达到了解惑的效果,至少收获了不少的知识。

  以前前辈总对我说,tomcat就是一个容器,再详细点就是一个装servlet的容器。恩,听起来挺简单的,也蛮容易理解的。可,它是个用来干什么的容器呢?

  这本书里面就有答案:tomcat其实就是个实现了servlet规范的一个容器。(个人理解)

  tomcat基本结构:

  

  大致流程:

  Connector创建ServerSocket监听http请求

  Processor解析Http请求,创建HttpServletRequest,HttpServletResponse对象

  Container传递HttpServletRequest,HttpServletResponse对象到对应servlet。

  阅读感悟:

  解析http请求,实现servlet规范,

  各组件生命周期管理,事件支持(通过实现Lifecycle接口,接口有start,stop方法)

  后台周期线程,

  容器自带pipeline处理请求,方便请求

  工具类实现功能组件,提供技术支持,降低开发成本,(LifecycleSupport类)

  门面对象隐藏保护内部实现,

  xml配置对象,动态组建tomcat,(Digester)

  容器呈树状结构,适合分发请求, 

  catalina启动,解析xml组建顶层容器对象,直到host,host本身也是个deployer,根据多种方式配置Context,
  启动server,根据他们的层级关系,依次调用生命周期方法启动。

  catalina关闭,实现,主线程阻塞等待关闭命令,
  注册jvm关闭钩子,预防不正常关闭时,资源未回收,

  自定义classloader,
  目的:缓存,安全管理,

  logger, manager

 

  

  

  

  

   

  

原文地址:https://www.cnblogs.com/w2154/p/5661839.html