导航菜单
首页 >  » 正文

深入剖析Tomcat读后感10篇

  《深入剖析Tomcat》是一本由Budi Kurniawan / Paul Deck著作,机械工业出版社华章公司出版的360图书,本书定价:59.00元,页数:2011-12-31,特精心从网络上整理的一些读者的读后感,希望对大家能有帮助。

  《深入剖析Tomcat》读后感(一):读书不能太过拘泥

  总体来说不错的一本书。

  但是前提是这本书是根据tomcat45来写的。你会发现从第三章开始你就开始慢慢有点吃力的跟节奏,书中描述的某个方法找不到,某个类找不到,我甚至为了找书中的一个类去寻找tomcat4的源码包。。

  然后我自己不看这本书去读tomcat的源码,大致了解之后,再回过头来翻翻这本,感觉有种豁然开朗的感觉,我相信,各位看官,你们也是

  《深入剖析Tomcat》读后感(二):读书也要一鼓作气

  假设一本600页的技术类书籍,规划自己每天读20页,一个月读完,听起来很有条理但是多半只能坚持一星期,一定会有其他事耽搁。战线拉的太长反而带来线程切换的开销。

  最好的办法就是一鼓作气,几天读完,下本源码书决定读《spring揭秘》

  howtomcatworks大概是今年读到的最有价值的一本书,从此web容器不再是黑盒,甚至能自己实现一个web容器,读书过程中还翻了源码解决了一个tomcat自动压缩的问题。

  《深入剖析Tomcat》读后感(三):学习源码,学习架构

  从接口设计开始,从功能出发。

  在以往的项目中,我很少从接口设计,更多的是从对象实体开始设计。这当然可能这个框架类设计最初是从功能出发的原因吧。书有很多可以参考与学习的设计模式,比如:Facade模式,管道模式。书中有不少关于线程执行的设计与方法。源代码还是有极大的参考价值,阅读其源代码会对自身的java语言功底会有很大的提升。

  理解学习容器,学习生命周期,逐渐考虑和解决问题的方式与方法都是值得去深入去阅读的,对有一定java基础,想在java框架上深入研究的人是帮助的。

  《深入剖析Tomcat》读后感(四):读完此书对Servlet容器有了更加深刻的认识

  本书通过引领我们自己动手实现一个Servlet容器作为出发点,让我们可以在实现Servlet容器中,思索、解决问题。然后与tomcat的实现对比,达到对一些问题有比较深刻的认知。本书并不是对最新的tomcat8进行剖析,选取的tomcat4和tomcat5来进行比较。个人觉得tomcat4、5的结构还不是太复杂,比较适宜来学习,毕竟不管tomcat有多大变化,大的基线还在那里。

  书中首先是由tomcat淘汰掉的默认connector入手(不是现在的coyote),让我们大体了解了tomcat是如何处理来自客户端的请求。为了读此书我还特地深入温习了一遍HTTP协议,这样在学习connector的时候就爽多了。接着通过tomcat四个容器engine、host、context、wrapper中的wapper,阐述了servlet容器中管道pipeline、阀Valve的概念(这个地方的实现原理跟struts2中的intercepter如出一辙 开源的好思想是该好好使用)。然后是tomcat使用了观察者模式来实现容器生命周期的管理、日志管理器、session管理器、Realm、服务器与服务组件、Digester库(又发现了一个xml解析利器)、JMX ,基本原理 娓娓道来 不要太爽!

  通过这本书也让我终于知道JMX如何玩了 、之前一通过jConsole看看JVM,遇到MBean就感觉它好神秘 今天终于拨开云雾见青天了 O(∩_∩)O哈哈~

  不过这本书,只是阐述了tomcat的基本运行原理、若是要深入了解tomcat还是要自己慢慢啃啃,tomcat的源码了。这里有apache-tomcat-7.0.57的源码https://github.com/sdw2330976/apache-tomcat-7.0.57

  《深入剖析Tomcat》读后感(五):感觉原书英文版也有错误的地方,不知道读的朋友发现没有

  在第三章,连接器那里

  中文版43页“若存在参数jsessionid,则表明回话标识符在查询字符串中,而不在Cookie中。因此,需要调用该请求的setRequestSessionURL()方法并传入true值。否则,调用setRequestSessionURL()方法并传入false值,同时调用setRequestedSessionURL()方法并传入null……”

  我开始看的时候就被搞糊涂了.setRequestedSessionURL()和setRequestSessionURL()有什么区别,为什么一个传入boolean值一个传入对象呢?

  是不是中文译者笔误?我就跑到作者官网下了一份英文版试读,发现原版就这么写的。既然不是译者的错误,那作者要表达什么?我又通过作者提供的Tomcat源码发现HttpRequest接口里并没有setRequestSessionURL()方法,只有setRequestedSessionURL()方法。再看一下接口的定义“Set a flag indicating whether or not the requested session ID for this request came in through a URL. This is normally called by the HTTP Connector, when it parses the request headers”

  翻译过来就是“设置一个标记用来指示本次请求所请求到的session id是否是来自URL,这通常由HTTPConnector来调用,当它解析request头的时候”(大概是这个意思)。也就是说true或者false是用来指示session id是否源自cookie。

  故而上面的setRequestSessionURL()应该改为setRequestedSessionURL()。那么既然这个方法要求传入boolean值,那么显然后面的传入null是不对的(1.4)。另外也没必要在传入false的时候再传一次null,所以可想而知,setRequestedSessionURL(null)这个代码也是作者的笔误。那么应该改成什么呢?

  通过上下文不难看出这段代码大概是要往request里设置一个值。设置什么样的值?跟session有关的。再查一下tomcat接口的源码只发现了一个这样的接口

  

  ublic void setRequestedSessionId(String id);

  翻译一下上面的解释就是。“为本次请求设置请求到session id”。再来结合作者语境:“若存在参数jsessionid,则表明回话标识符在查询字符串中,而不在Cookie中。因此,需要调用该请求的setRequestSessionURL()方法并传入true值。否则,调用setRequestSessionURL()方法并传入false值,同时调用setRequestedSessionURL()方法并传入null……”

  作者想要说这个session id不是来自 URL,也就是说是来自cookie。

  所以调用了setRequestedSessionURL(false);注意,是更正后的Requested。那么再调用request.setRequestedSessionId(null);的意思就是,这次请求到的session id不是来自URL,所以不往requestedSessionId这个属性设值。。。