![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Tomcat 7源码分析
文章平均质量分 81
iteye_21061
这个作者很懒,什么都没留下…
展开
-
tomcat 7 源码分析-1 关于读取properties及注册系统properties
Tomact的启动开始于Bootstrap.java,在其init()中,首先要做的就是 setCatalinaHome(); setCatalinaBase();initClassLoaders(); 目的就是将tomcat启动的环境设置好,在进行classloader。 private void setCatalinaHom...原创 2010-07-16 15:32:20 · 135 阅读 · 0 评论 -
tomcat 7 源码分析-13 处理request的Valve和Valve的链表Pipeline
tomcat打开endpoint的监听对通过某种协议,通常下是http的信息进行解析,组装成request,接着给Http11Protocol(ProtocolHandler)和Http11Processor处理。adapter.service(request, response); connector.getService().getContainer().getPipeline()...2010-08-05 11:01:42 · 122 阅读 · 0 评论 -
tomcat 7 源码分析-12 Enumeration枚举
Enumeration枚举,就是要把内容没有重复的遍历,而且不破坏原有的存储空间。在http headers的实现中,tomcat实现了一些枚举类。Enumerate the distinct header names. Each nextElement() is O(n) class NamesEnumerator implements Enumeration<String&g...2010-07-29 15:02:57 · 105 阅读 · 0 评论 -
tomcat 7 源码分析-11 tomcat对http协议的实现
Implementation of InputBuffer which provides HTTP request header parsing as well as transfer decoding socket能获得客户端发来的http协议,tomcat需要对http协议(传输的是byte流)进行解析,例如获得http的method,protocol,URI等信息.既然是对byt...2010-07-28 11:11:09 · 113 阅读 · 0 评论 -
tomcat 7 源码分析-10 线程池ThreadPoolExecutor
tomcat开启socket的accept线程后,其实要做的主要工作是交给worker线程去完成的,这其中使用了线程池的技术。如:try { SocketWrapper<Socket> wrapper = new SocketWrapper<Socket>(socket); wrapper.setKeepAlive...2010-07-26 14:55:56 · 131 阅读 · 0 评论 -
tomcat 7 源码分析-9 tomcat对ServerSocket的封装和使用
tomcat中ServerSocket线程监听是否有socket连接,如果有就转而处理。这个过程类似于你向tomcat发送一个URL请求,实质这个请求转换成http协议,通过socket发出来。先看ServerSocket的封装主要为public abstract class ServerSocketFactory implements Cloneable class Defaul...2010-07-26 09:48:37 · 145 阅读 · 0 评论 -
tomcat 7 源码分析-8 生命周期lifecycle和监听listener
每个应用都有生命周期lifecycle,可能包括init,start,stop,destroy等更多。针对生命周期的变化,如何做变化作出反应,tomcat在设计的时候,把时间监听listener结合起来,所以listener取的名字是lifecyclelistener,对lifecycle进行监听。总的最底层的来自两个interface的设计Lifecycle和LifecycleListene...2010-07-22 14:36:10 · 179 阅读 · 0 评论 -
tomcat 7 源码分析-7 server初始化中的JMX(DynamicMBean)再续
这里说下tomcat对DynamicMBean的实现和封装。利用tomcat包,可以轻松实现将自己的对象注册为MBeans。看个例子就明白了。package com.MBean.test;import org.apache.tomcat.util.modeler.BaseNotificationBroadcaster;public class DyMBeanObj exte...2010-07-21 14:42:41 · 93 阅读 · 0 评论 -
tomcat 7 源码分析-6 server初始化中的JMX(DynamicMBean)续
先说JMX,The JMX technology provides a simple, standard way of managing resources such as applications, devices, and services.JMX是为了管理资源产生的,这个资源包括应用、设备和服务等。取个例子,如果你写了一个应用,初始化了20个的数据连接数,当你的应用还在跑的时候,发觉...原创 2010-07-20 18:01:53 · 106 阅读 · 0 评论 -
tomcat 7 源码分析-5 server初始化中的JMX(DynamicMBean)
Server的中的初始化基本核心在StandardServer中,下面的代码 protected void initInternal() throws LifecycleException { super.initInternal(); // Register global String cache // No...2010-07-20 17:27:08 · 115 阅读 · 0 评论 -
tomcat 7 源码分析-4 server初始化背后getServer().init()
getServer().init()其实就是调用server的init函数,但是server是个interface,还要看其在new的时候,这个就是多态。 digester.addObjectCreate("Server", "org.apache.catalina.core.StandardServer"...2010-07-19 22:52:25 · 144 阅读 · 0 评论 -
tomcat 7 源码分析-3 使用Digester读取xml文件实例化server
接下来tomcat要load了,看下面一些程序片段public void load() { long t1 = System.nanoTime(); initDirs(); initNaming(); Digester digester = createStartDigester(); .......2010-07-19 14:19:29 · 102 阅读 · 0 评论 -
tomcat 7 源码分析-2 类加载ClassLoader
tomcat在启动的时候使用了三个类加载器 private void initClassLoaders() { try { commonLoader = createClassLoader("common", null); if( commonLoader == null ) { ...原创 2010-07-17 18:39:28 · 101 阅读 · 0 评论 -
tomcat 7 源码分析-14 tomcat的container设计
实现container←-----containerBase ↑ ↑ |继承 |继承 | | | 实现 |Engine←-----—-- St...2010-08-05 14:52:43 · 94 阅读 · 0 评论