2013年10月13日

jetty启动源码分析

摘要: Main类是jetty的启动类,是项目启动的入口,main方法通过解析传入的参数,来决定加载哪些组件的配置文件,默认根据jetty根目录下面的start.ini来决定加载。Main的start方法,会启动监控线程Monitor,在绝大情况下都不会使用,它会在接受到stop命令后,销毁Main创建的子进程。由Config加载start.conf,确定各个子模块所对应需要加载的jar包,及Main需要委托调用的主类,默认是XmlConfiguration类。在加载XmlConfiguration类定义时,切换了类加载器。XmlConfiguration实现了ioc功能,根据Main方法选定的配置文 阅读全文

posted @ 2013-10-13 22:41 knockon 阅读(2966) 评论(1) 推荐(1) 编辑

2013年9月28日

tomcat源码分析 Http11Processor process

摘要: 这个类中Request , Response属性都是可重复使用的,每次请求结束,都会回收,以避免请求量大时创建大量对象。一个Processor同一时刻只处理一个请求。1、请求开始时设置一些初始信息,如获取socket的inputStream, outputStream,设置当前处理状态为STATE_PARSERequestInfo rp = request.getRequestProcessor(); rp.setStage(org.apache.coyote.Constants.STAGE_PARSE); // Setting up the I/O ... 阅读全文

posted @ 2013-09-28 21:24 knockon 阅读(1857) 评论(0) 推荐(0) 编辑

2013年9月25日

tomcat源码分析 StandardContext startInternal 过程

摘要: 1、Send j2ee.state.starting notificationif (this.getObjectName() != null) { Notification notification = new Notification("j2ee.state.starting", this.getObjectName(), sequenceNumber.getAndIncrement()); broadcaster.sendNotification(notification); }2、实例化we... 阅读全文

posted @ 2013-09-25 22:10 knockon 阅读(2321) 评论(0) 推荐(0) 编辑

2013年9月24日

tomcat源码分析 MBeanFactory#createStandardContext过程

摘要: 这个方法主要是启动一个web项目,可以想象一下,所有跟web项目配置相关的信息,都会在这个方法里间接调用到,listener, servlet, filter等在web.xml配置的信息,还有一些通过注解配置的信息,tomcat都会扫描出来,并做初始化工作。1、生成StandardContext实例,并设置属性。// Create a new StandardContext instance StandardContext context = new StandardContext(); path = getPathStr(path); context... 阅读全文

posted @ 2013-09-24 21:18 knockon 阅读(1169) 评论(0) 推荐(0) 编辑

2013年9月23日

tomcat源码分析 JIoEndpoint SocketProcessor处理过程

摘要: 当JIoEndpoint接受到请求时,生成SocketProcessor实例,SocketProcessor实现了Runnable接口。我们稍微看一下SocketProcessor的run方法做了什么事情。1、设置SocketState状态为SocketState.OPEN,这是一个枚举类。SocketState state = SocketState.OPEN;2、对socket进行一些额外处理,事实上只有在ssl的情况下,才会有额外处理。 如抛出异常,则设置状态值为SocketState.CLOSED// SSL handshakeserverSocketFactory.handshake 阅读全文

posted @ 2013-09-23 22:17 knockon 阅读(1649) 评论(0) 推荐(0) 编辑

2013年9月22日

tomcat源码分析 Acceptor run 过程

摘要: org.apache.tomcat.util.net.JIoEndpoint.Acceptor1、调用countUpOrAwaitConnection,阀门数加1。 每个Acceptor有最大处理上限,默认为10000,如为-1,则无上限。 protected void countUpOrAwaitConnection() throws InterruptedException { if (maxConnections==-1) return; LimitLatch latch = connectionLimitLatch; if (latch!=... 阅读全文

posted @ 2013-09-22 22:26 knockon 阅读(580) 评论(0) 推荐(1) 编辑

2013年9月21日

tomcat源码分析 Connector init 过程

摘要: --------Connector[HTTP/1.1-8080] 初始化过程-----1、注册MBean2、CoyoteAdapter实例化,CoyoteAdapter是请求的入口。当有请求时,CoyoteAdapter对状态进行了处理,结尾处对请求进行回收,中间过程交由pipeline来处理。3、protocolHandler 初始化(org.apache.coyote.http11.Http11Protocol) 在这一步中,完成了endpoint的初始化4、mapperListener初始化。--------Connector[AJP/1.3-8009]初始化过程------1、注册M. 阅读全文

posted @ 2013-09-21 20:57 knockon 阅读(245) 评论(0) 推荐(0) 编辑

2013年9月20日

tomcat源码分析 StandardServer初始化过程

摘要: ----------------------------以下为initInternal方法----------------------------1、调用父类org.apache.catalina.util.LifecycleMBeanBase#initInternal方法,注册MBean2、注册本类的其它属性的MBean3、NamingResources初始化 globalNamingResources.init();4、从common ClassLoader开始往上查看,直到SystemClassLoader, 遍历各个classLoader对应的查看路径,找到jar结尾的文件,读取... 阅读全文

posted @ 2013-09-20 20:53 knockon 阅读(1284) 评论(0) 推荐(0) 编辑

2013年9月19日

tomcat源码分析 catalina load 过程

摘要: 1、catalina.home的设置2、创建createStartDigester,digester是XML到对象的一个解析组件,详情可见apache。 重要特点是生成的对象从属性的延展性来看,是树形,这与XML在形式上是一致的。 所以要设置根结点对象,这里的根结点对象就是Catalina实例。 默认的配置文件就是conf/server.xml。估且称之为是一个映射的过程。 protected Digester createStartDigester() { long t1=System.currentTimeMillis(); // Initialize th... 阅读全文

posted @ 2013-09-19 21:55 knockon 阅读(863) 评论(0) 推荐(0) 编辑

tomcat类加载器的实例化过程

摘要: tomcat启动时很重要的是使用了自己定义的一个类加载器,对于该类加载器的源码稍微做一个简单的了解。tomcat 版本是7.0.33。在Bootstrap的initClassLoaders方法中,即是对类加载器的实例化过程。特别说明一下commonLoader的加载过程,首先查找catalina.properties中是否有common.loader的配置项,如有,则将该值作为类加载需要加载的路径。common.loader=${catalina.base}/lib,${catalina.base}/lib/*.jar,${catalina.home}/lib,${catalina.home} 阅读全文

posted @ 2013-09-19 21:28 knockon 阅读(1716) 评论(0) 推荐(0) 编辑

导航