[置顶] 谈谈Tomcat内核

========广告时间========鄙人的新书《Tomcat内核设计剖析》已经在京东销售了,有需要的朋友可以到 https://item.jd.com/12185360.html 进行预定。感谢各位朋友。为什么写《Tomcat内核设计剖析》=========================欢迎关注:...
阅读(1640) 评论(5)

《Tomcat内核设计剖析》京东评论过百

到京东看了下《Tomcat内核设计剖析》评论都一百多了,上个月也第二次印刷了,这里看下好评、中评和差评。好评:中评对于中评,请看 为什么《写Tomcat内核设计剖析》,就当是回复吧。差评这个物流慢应该打给东哥。...
阅读(1328) 评论(0)

为什么写《Tomcat内核设计剖析》

三四年前更多地还是做web业务开发,基本不关心web层以下的东西,但是每次出故障时面对现象都不能从脑子里形成由底层到应用层的完整的逻辑,往往只能分析到Web应用就无法继续往下,Web容器完全就是一个黑盒,对于问题更多的是靠猜。举个简单的例子,应用突然就不服务了,此时如果对Web容器模型熟悉就可以直接jstack打印虚拟机的栈进行分析。我个人接受不了这种用非完整性逻辑去分析事物的感觉,于是想着还是把T...
阅读(3349) 评论(2)

《Tomcat内核设计剖析》勘误表

《Tomcat内核设计剖析》勘误表 书中第95页图request部分印成了reqiest。 书中第311页两个tomcat3,其中一个应为tomcat4。 书中第5页URL应为URI。 书中前言第13行,借签应为借鉴。...
阅读(1130) 评论(2)

新书预售《Tomcat内核设计剖析》

鄙人的新书《Tomcat内核设计剖析》已经在京东预售了,有需要的朋友可以通过文末的连接进行预定。感谢各位朋友。本书特色? 深入剖析Tomcat的每一个设计要点,使读者知其然,更知其所以然; 拒绝没营养的直接贴代码分析,而是升华到对Tomcat设计思想的剖析; 通篇采用大量插图来辅助文字解释,降低读者的理解门槛; 层次分明,脉络清晰,由浅入深,循序渐进,确保知识讲解的连贯性和普适性。 通过本书能快速建...
阅读(3623) 评论(12)

tomcat如何共享多个web应用会话

问题今天有位朋友问了个问题,大致是:tomcat下两个Java web,一个是商城,一个是直播,从商城登录后,再跳转到直播,发现处于非登录状态。解决思路 将session抽出来成一个session服务,统一通过该服务操作session。 tomcat内部用会话管理器获取会话时遍历所有context内的会话。 方案1重写获取session方法即可。方案2找了源码发现已经支持类似遍历所有context内...
阅读(4493) 评论(8)

ant编译tomcat

安装jdk,用jdk6即可,如果要编译JSR-356 (Java WebSocket 1.1)则需要jdk7. 安装ant,Ant 1.8.2或更新版本。 连到apache的svn上下载自己想要的版本,比如这里使用TOMCAT_7_0_73。 Tomcat目录下新建build.properties文件,可以以build.properties.default文件作为模板修改,比如可以修改base.pa...
阅读(848) 评论(0)

75篇关于Tomcat源码和机制的文章

整理下前面写过的75篇关于Tomcat源码和机制的文章 文章列表 如何设计一个Web容器 Web安全认证机制知多少 Tomcat集群实现源码级别剖析 Tomcat集群如何同步会话 从单机到集群会话的管理之集群模式一 从单机到集群会话的管理之集群模式二(更大的集群) Tomcat集群的failover机制 Tomcat集群应用部署的实现机制 Tomcat集群机制剖...
阅读(17277) 评论(4)

Tomcat如何实现Comet

Comet模式是一种服务器端推技术,它的核心思想提供一种能让当服务器端往客户端发送数据的方式。Comet模式为什么会出现?刚开始人们在客户端通过不断自动刷新整个页面来更新数据,后来觉得体验不好又使用了AJAX不断从客户端轮询服务器更新数据,然后是使用Comet模式由服务器端通过长连接推数据。Comet模式能大大减少发送到服务器端的请求从而避免了很多开销,而且它还具备更好的实时性。如图所示,客户端发送...
阅读(6848) 评论(0)

Tomcat如何实现WebSocket

WebSocket协议属于HTML5标准,越来越多浏览器已经原生支持WebSocket,它能让客户端和服务端实现双向通信。在客户端和服务器端建立一条WebSocket连接后,服务器端消息可直接发送到客户端,从而打破传统的请求响应模式,避免了无意义的请求。比如传统的方式可能会使用AJAX不断请求服务器端,而WebSocket则可以直接发送数据到客户端且客户端不必请求。同时,由于有了浏览器的原生支持,编...
阅读(7515) 评论(2)

Tomcat怎么实现异步Servlet

有时Servlet在生成响应报文前必须等待某些耗时的操作,比如在等待一个可用的JDBC连接或等待一个远程Web服务的响应。对于这种情况servlet规范中定义了异步处理方式,由于Servlet中等待阻塞会导致Web容器整体的处理能力低下,所以对于比较耗时的操作可以放置到另外一个线程中进行处理,此过程保留连接的请求和响应对象,在处理完成之后可以把处理的结果通知到客户端。下面先看Servlet在同步情况...
阅读(5580) 评论(8)

关于tomcat中Servlet对象池

Servlet在不实现SingleThreadModel的情况下运行时是以单个实例模式,如下图,这种情况下,Wrapper容器只会通过反射实例化一个Servlet对象,对应此Servlet的所有客户端请求都会共用此Servlet对象,而对于多个客户端请求tomcat会使用多线程处理,所以应该保证此Servlet对象的线程安全,多个线程不管执行顺序如何都能保证执行结果的正确性。例如刚做web应用开发时...
阅读(3871) 评论(2)

tomcat中Servlet的工作机制

在研究Servlet在tomcat中的工作机制前必须先看看Servlet规范的一些重要的相关规定,规范提供了一个Servlet接口,接口中包含的重要方法是init、service、destroy等方法,Servlet在初始化时要调用init方法,在销毁时要调用destroy方法,而对客户端请求处理时则调用service方法。对于这些机制的支持都必须由Tomcat内部去支持,具体则是由Wrapper容...
阅读(4952) 评论(8)

tomcat配置集群

在Tomcat中使用集群功能相对简单。最简单的用法是直接在server.xml文件的或节点下添加配置,这意味着集群相关的配置都使用默认的,它其实等同于<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpClus...
阅读(1925) 评论(0)

Tomcat集群应用部署的实现机制

集群应用部署是一个很重要的应用场景,设想一下如果没有集群应用部署功能,每当我们发布应用时都要登陆每台机器对每个tomcat实例进行部署,这些工作量都是繁杂且重复的,而对于进步青年的程序员来说是不能容忍重复的事情发生的。于是需要一种功能可以在集群中某实例部署后,集群中的其他tomcat实例会自动完成部署。集群部署主要分两部分内容。 第一部分是关于应用传输问题,主要是关于在tomcat中如何一个web应...
阅读(7331) 评论(0)

Tomcat集群如何同步会话

Tocmat集群中最重要的交换信息就是会话消息,对某个tomcat实例某会话做的更改要同步到集群其他tomcat实例的该会话对象,这样才能保证集群所有实例的会话数据一致。在tribes组件的基础上完成这些工作就相当容易些,tribes是tomcat实现的一个通信框架。如下图,tomcat实现会话同步的过程中大致会使用如下组件,现在假设中间的tomcat实例的会话改变了,它会通过会话管理器Manage...
阅读(4689) 评论(0)

tomcat集群的failover机制

集群要提供高可用性就必须要有某种机制去保证,常用的机制为failover(故障转移),简单说就是通过一定的heartbeat检测是否有故障,一旦故障发生备份节点则接管故障节点的工作。tomcat使用BackupManager模式管理会话必须由负载均衡器提供会话黏贴(Session Stick)机制配合,所谓会话黏贴其实是一种会话定位技术,即在tomcat节点上生成一种包含位置信息的会话id,一般是附...
阅读(2744) 评论(0)

ServletContainerInitializer初始化器

在web容器启动时为提供给第三方组件机会做一些初始化的工作,例如注册servlet或者filtes等,servlet规范中通过ServletContainerInitializer实现此功能。每个框架要使用ServletContainerInitializer就必须在对应的jar包的META-INF/services 目录创建一个名为javax.servlet.ServletContainerIni...
阅读(8204) 评论(7)

tomcat请求路由映射核心组件Mapper

Mapper组件的核心功能是提供请求路径的路由映射,根据某个请求路径通过计算得到相应的Servlet(Wrapper)。这节看下Mapper的实现细节,包括Host容器、Context容器、Wrapper容器等的映射关系以及映射算法。如果要将整个tomcat容器中所有的web项目以能够以Servlet级别组织起来,需要一个多层级的类似Map结构的存储空间。如上图,以Mapper作为映射的入口,按照容...
阅读(4441) 评论(0)

tomcat如何路由映射网址

对于web容器来说,根据请求客户端路径路由到对应的资源属于其核心功能,假设用户在自己电脑上使用浏览器输入网址http://www.test.com/test/index.jsp,报文通过互联网网络到达该主机服务器,服务器应将其转到test应用的index.jsp页面中进行处理,然后再返回。针对tomcat,为了更加详细说清楚这个过程,引入一张图, 客户端浏览器输入http://tomcat.a...
阅读(4637) 评论(2)
91条 共5页1 2 3 4 5 ... 下一页 尾页
    打赏作者

    赞作者(*^__^*)



    如果您觉得作者写的文章有帮助到您,您可以打赏作者一瓶汽水(*^__^*)

    作者

    笔名:seaboat 汪洋之舟

    github:https://github.com/sea-boat

    微信:



    公众号:

    个人资料
    • 访问:866604次
    • 积分:12009
    • 等级:
    • 排名:第1314名
    • 原创:284篇
    • 转载:5篇
    • 译文:1篇
    • 评论:316条
    博客专栏