tomcat源码学习
蓝天的IT生涯
这个作者很懒,什么都没留下…
展开
-
Tomcat 启动过程源码解析(一)
Tomcat 启动过程源码解析(一)最近开始研究tomcat6.x的源代码,将读过和遇到的疑问及相关答案记录一下,以便日后回顾和总结。Tomcat的启动的主入口是org.apache.catalina.startup包下的Bootstrap类。在eclipse中右键执行这个java Application就能将tomcat容器启动起来了。这个启动过程主要是初始化了三个类加载器(commonLo原创 2013-03-08 18:21:25 · 1344 阅读 · 0 评论 -
tomcat类加载器深入研究笔记
1. StandardClassLoader 继承自URLClassLoader,和URLClassLoader相比没有添加任务新的功能。这个类已经被tomcat7.x废弃掉了,官方准备在tomcat8.x版本中去掉这个类。2. BootStrapClassLoader是用本地代码实现的,它负责加载核心的java class(即所有java.*开头的类)。另外JVM还提供了原创 2013-04-30 18:45:52 · 1699 阅读 · 0 评论 -
web.xml中load-on-startup的作用
如下一段配置,熟悉DWR的再熟悉不过了: dwr-invoker org.directwebremoting.servlet.DwrServlet debug true 1 dwr-invoker /dwr/*我们注意到它里面包含了这段配置:1,那么这个配置有什么作用呢?贴一段英文原汁原转载 2013-04-29 09:11:18 · 532 阅读 · 0 评论 -
servlet的解析过程,写的真好!
要介绍 Servlet 必须要先把 Servlet 容器说清楚,Servlet 与 Servlet 容器的关系有点像枪和子弹的关系,枪是为子弹而生,而子弹又让枪有了杀伤力。虽然它们是彼此依存的,但是又相互独立发展,这一切都是为了适应工业化生产的结果。从技术角度来说是为了解耦,通过标准化接口来相互协作。既然接口是连接 Servlet 与 Servlet 容器的关键,那我们就从它们的接口说起。转载 2013-04-30 13:08:56 · 1140 阅读 · 0 评论 -
Tomcat 热部署实现方式源码分析总结
研究了一下tomcat的类的热部署的源码实现,总结沉淀一下。Tomat实现热部署主要有两种机制:(1) 一种是类似于Servlet这种类的热部署即在WEB-INF/class目录下的类:实现方式可以概括为在容器启动的时候起一条后台线程,定时的检测类文件的时间戳变化,如果类的时间戳变掉了,则调用容器的reload的方法,将类重新载入。那么具体的分析一下:tomcat用来加载servlet原创 2013-04-30 18:44:50 · 5773 阅读 · 3 评论 -
tocmat中jsp热部署实现原理
我们知道在开发工程的时候jsp文件是即修改即生效的,由于比较好奇就研究了一下tomcat对于jsp热部署的实现原理,总结沉淀一下吧。Tomcat jsp热部署的实现原理大体是这样的,每个JSP页面从上次访问到下次访问总是有默认几秒的缓存时间的,也就说并不是严格的即修改即生效,tocmat7默认是有4秒的缓存延迟的。这个默认的缓存延迟是在类EmbeddedServletOptions的privat原创 2013-05-03 17:37:48 · 1726 阅读 · 0 评论 -
tomcat配置session持久化
Session的管理,tomcat两个实现类:org.apache.catalina.session.StandardManager和org.apache.catalina.session.PersistentManagerStandardManager 默认的方法 可以配置的地方比较少PersistentManager 提供了很灵活的管理方式 配置性强形式一:存储在本地文件中:配转载 2013-05-10 12:48:00 · 1443 阅读 · 0 评论 -
Tomcat会话管理元素Manager五种对象介绍
1、StandardManager 如果不配置Tomcat以使用不同的管理器,则这一管理器就是默认的会话管理器。这是在Tomcat正运行时在内存中处理会话的非集群实现。 在Tomcat关闭时,它把会话对象图(session object graph)写入磁盘上的SESSIONS.ser,而且在Tomcat再次启动时,将重新加载这些对象图。转载 2013-05-10 12:42:37 · 1303 阅读 · 0 评论 -
tomcat架构分析 (Session管理) 一篇不错的文章
Session管理是JavaEE容器比较重要的一部分,在app中也经常会用到。在开发app时,我们只是获取一个session,然后向session中存取数据,然后再销毁session。那么如何产生session,以及session池如何维护及管理,这些并没有在app涉及到。这些工作都是由容器来完成的。 Tomcat中主要由每个context容器内的一个Manager对象来管理session。对转载 2013-05-10 13:13:01 · 1113 阅读 · 0 评论 -
Tomcat中session的管理机制
Tomcat中session的管理机制1. 请求过程中的session操作:简述:在请求过程中首先要解析请求中的sessionId信息,然后将sessionId存储到request的参数列表中。然后再从request获取session的时候,如果存在sessionId那么就根据Id从session池中获取session,如果sessionId不存在或者session失效,那么则原创 2013-05-11 13:23:50 · 6136 阅读 · 1 评论 -
Tomcat类加载器(附JVM类加载器简介)
Tomcat类加载器(附JVM类加载器简介) 学习tomcat类加载器,首先得先看下JVM提供了几种类加载器,毕竟tomcat类加载器是依赖于JVM类加载器的。 JVM类加载器:引导类加载器(bootstrapclassloader)、扩展类加载器(extension classloader)、系统类加载器(又称应用类加载器,system classload原创 2013-04-13 17:56:22 · 2974 阅读 · 0 评论 -
tocmat类加载学习笔记
1. 试用系统类加载器载入某个Servlet类所使用的全部类,那么Servlet就能够访问所有的类,包括当前运行的Java虚拟机(Java Virtual Machine,JVM)中环境CLASSPATH指明的路径下的所有的类和库。这是非常危险的。2. Servlet应该只允许载入WEB-INF/classes目录及其子目录下的类,和从部署的库到WEB-INF/lib目录载原创 2013-04-13 18:03:21 · 834 阅读 · 0 评论 -
tomcat源码解析(一)
废话少说,拉代码,导入eclipse开干,具体步骤可以参考http://hi.baidu.com/hateeyes/blog/item/7f44942a20ad8f9d023bf66d.html下面谈谈我对Tomcat架构的理解总体架构:面向组件架构基于JMX事件侦听1)面向组件架构tomcat代码看似很庞大,但从结构上看却很清晰和简单,它主要由一堆组件组成转载 2013-03-29 19:13:11 · 765 阅读 · 0 评论 -
Tomcat 请求过程源码解析(二)
Tomcat 请求过程源码解析(二)前几天学习了一下tomcat的启动过程做的一些事情,这次抽点时间来学习一下tomcat启动之后,一个请求进来到返回都做了什么事情(主要从源码的角度来学习一下)。之前知道在tomcat启动的时候会初始化并启动Connector,此时Connector会通过一个ProtocolHandler来启动一个Endpoint实例,这个Endpoint是个比较关键的角色,原创 2013-03-31 14:27:57 · 1537 阅读 · 0 评论 -
tomcat 解析包含中文的cookie 抛警告源码分析
前段时间一个同事在项目那边日志中报了很多警告,内容是如下这样:警告: java.lang.IllegalArgumentException: Control character: ffce incookie value or attribute. COOKIE: uc1=lltime=1362664120&cookie14=UoLa%2FgYsjAaa2Q%3D%3D&existShop=tr原创 2013-04-03 12:19:36 · 2925 阅读 · 1 评论 -
tomcat 随笔小记
刚才遇到了一个小问题在源码中修改tomcat 的链接器的端口以及url的编码方式没有生效: connectionTimeout="20000" redirectPort="8443" />改成了这样: connectionTimeout="20000"原创 2013-04-03 09:48:21 · 975 阅读 · 0 评论 -
JMX的一点研究
JMX学习总结前段时间研究tomcat,发现里面涉及到了好多JMX的内容,那么抽点时间学习研究了一下,总结如下:1.JMX是什么?JMX(java ManagementExtensions)java管理扩展,“扩展”顾名思义就是不属于JDK的一部分,只是JDK的扩展。不过这个概念有点过时,JDK1.5以后的版本实现了默认的JMX引擎。也就是现在的JMX已经属于JDK的不可分割的一部分了原创 2013-03-24 17:17:44 · 1681 阅读 · 0 评论 -
Tomcat相关基础知识
1.Tomcat目录结构 (1)bin: 存放启动和关闭tomcat脚本 (2)conf:存放不同的配置文件(server.xml和web.xml) (3)lib:存放Tomcat运行需要的库文件 (4)logs:存放Tomcat执行时的LOG文件 (5)temp:Tomcat运行时用于存放临时文件 (6)webapps:Tomcat的主要Web发布目录(包括应用程转载 2013-04-07 18:53:42 · 795 阅读 · 0 评论 -
Tomcat类加载机制概述
声明:源码版本为Tomcat 6.0.35 在本系列的第二篇文章中,曾经介绍过在Tomcat启动时会初始化类加载器(ClassLoader),来处理整个Web工程中Class的加载问题。 类加载机制是Java平台中相当重要的核心技术,待笔者有所积累后会再次讨论这个话题。在一般的业务开发中我们可能较少接触和使用ClassLoader,但是在进行框架级程转载 2013-04-10 13:16:00 · 681 阅读 · 0 评论 -
tocmat类加载器
一、The Loader接口 在web应用程序中加载servlet和其他类时有一些规则。比如:在应用程序中加载一个servlet,被限制在the WEB-INF/classes目录以及子目录下。然而,servlet不会访问其他类,即使这些类包含运行在Tomcat中的JVM的CLASSPATH下。同时一个servlet限制了访问类库的目录(WEB-INF/lib目录)。转载 2013-04-13 18:01:26 · 821 阅读 · 0 评论 -
tomcat类加载体系结构
与Java语言相似,Tomcat提供了分级类加载机制,当然,最顶端非BootStrap Loader莫属,它由C++编写,JVM启动且完成初始化后首先被调用。不过在Tomcat中类加载体系中,缺少了ExtClassLoader的身影(待验证),ExtClassLoader加载sun公司提供的扩展机制(参考文章:<<Extension Mechanism Architecture>>)。下面是架转载 2013-04-13 18:02:15 · 693 阅读 · 0 评论 -
tomcat session管理总结
1. Catalina通过一个成为Session管理器的组件来管理建立的Session对象,该组件由org.apache.catalina.Manager接口表示。2. Session管理器需要与一个Context容器相关联,且必须与一个Context容器关联。3. Session管理器负责创建、更新、销毁Session对象,当请求到来时,会返回一个有效的Se原创 2013-05-11 15:40:58 · 1592 阅读 · 0 评论