tomcat
文章平均质量分 55
cs_hare
这个作者很懒,什么都没留下…
展开
-
Tomcat源码解读--代码走读之代码走读之其他的剩余部分(五十三)(终)
1、(四十八中的2-5)CoyoteAdapter的service的剩下部分,针对request和response的finishRequest()。2、(四十七中的2-5-5)AbstractHttp11Processor的process方法剩下部分,主要是更新输入输出流,更改request状态。3、(四十七中的2-6)AbstractConnectionHandler的process...原创 2013-06-24 10:39:37 · 180 阅读 · 0 评论 -
Tomcat源码解读--代码走读之(三十八的3-2-1)pipeline.start(三十九)
当前对象为:Pipeline[StandardEngine[Catalina].StandardHost[localhost].StandardContext[/docs].StandardWrapper[jsp]]1、init(),(1)、setStateInternal(LifecycleState.INITIALIZING, null, false),因为StandardPi...原创 2013-06-21 09:30:28 · 124 阅读 · 0 评论 -
Tomcat源码解读--代码走读之(三十七的2-5-5)StandardWrapper.start(三十八)
当前对象为:StandardEngine[Catalina].StandardHost[localhost].StandardContext[/docs].StandardWrapper[jsp]StandardWrapper的类关系是:StandardWrapperextends ContainerBase implements ServletConfig, Wrapper, N...原创 2013-06-21 09:30:17 · 101 阅读 · 0 评论 -
Tomcat源码解读--代码走读之(三十三的1-1-6)webXml.configureContext(context)(三十七)...
1、将webXml对象里对StandardContext的属性进行映射、contextParams、ejbLocalRefs、ejbRefs、envEntries、errorPages、filters、filterMaps、jspPropertyGroups、listeners、localeEncodingMappings、messageDestinationRefs、metadata...原创 2013-06-21 09:30:04 · 186 阅读 · 0 评论 -
Tomcat源码解读--代码走读之(三十一的6-23)StandardManager.start(三十六)
1、init 1)、setStateInternal(LifecycleState.INITIALIZING,null, false),因为StandardManager的ls的listeners为0,所以没有动作执行。 2)、initInternal(),调用父类注册Mbean,设置distributable属性。 3)、setStateInternal(Lifecycle...原创 2013-06-21 09:29:54 · 226 阅读 · 0 评论 -
Tomcat源码解读--代码走读之(三十一的6-15)setManager(contextManager)(三十五)
设置contextManager = newStandardManager(),之后setManager。代码在ContainerBase中。 1、manager.setContainer(this);其中this= StandardEngine[Catalina].StandardHost[localhost].StandardContext[/docs],代码在ManagerBas...原创 2013-06-20 11:09:45 · 179 阅读 · 0 评论 -
Tomcat源码解读--代码走读之(三十一的6-14)pipeline.start(三十四)
1、init(1)、setStateInternal(LifecycleState.INITIALIZING,null, false),StandardPipeline的ls的listeners为0,所以没有动作执行。(2)、initInternal(),没有动作执行(3)、setStateInternal(LifecycleState.INITIALIZED,null, f...原创 2013-06-20 11:09:34 · 244 阅读 · 0 评论 -
Tomcat源码解读--代码走读之(三十一的6-12)StandardContext之configure_start(三十三)...
fireLifecycleEvent(Lifecycle.CONFIGURE_START_EVENT,null);StandardContext在此情况下有4个listeners。1、ContextConfig,执行configureStart(),方法。(1)、webConfig(); 1)、得到默认的defaultWebXml为WEB-INF/web.xml,在Stan...原创 2013-06-20 11:09:22 · 154 阅读 · 0 评论 -
Tomcat源码解读--代码走读之(三十一的6-11)WebappLoader.start(三十二)
WebappLoader的类关系是, WebappLoader extends LifecycleMBeanBase implementsLoader, PropertyChangeListener1、调用LifecycleBase的start方法 (1)、init 1)、setStateInternal(LifecycleState.INITIALIZING, n...原创 2013-06-20 11:09:08 · 143 阅读 · 0 评论 -
Tomcat源码解读--代码走读之三十(续)(三十一)
1、contextConfig(),代码在contextconfig中 (1)、获取defaultContextXml,值为conf/context.xml(2)、获取defaultContextXml的绝对路径,值为D:\workspace\test_tomcat\apache-tomcat-7.0.22-src\output\build\conf\context.xml(3...原创 2013-06-20 11:08:54 · 133 阅读 · 0 评论 -
Tomcat源码解读--代码走读之(二十九的2-3)StandardContext. start(三十)
StandardContext的类关系是:classStandardContext extends ContainerBase implements Context, NotificationEmitter,abstractclass ContainerBase extends LifecycleMBeanBase implements Container 调用父类Lifec...原创 2013-06-19 14:23:48 · 115 阅读 · 0 评论 -
Tomcat源码解读--代码走读之(二十八的6)StandardHost. addChild(二十九)
在child中加入listener,加入后,StandardContext有2个listener调用父类ContainerBase的addChild。继续调用addChildInternal。 (1)、child.setParent(this); 设置StandardContext[/docs]的父亲为StandardEngine[Catalina]...原创 2013-06-19 14:23:34 · 158 阅读 · 0 评论 -
Tomcat源码解读--代码走读之(二十一的2-3)pipeline.start(四十)
调用当前方法的对象是StandardEngine[Catalina],执行pipeline的start方法的对象是Pipeline[StandardEngine[Catalina]]1、init(1)、setStateInternal(LifecycleState.INITIALIZING,null, false),因为StandardPipeline的ls的listeners为0,所...原创 2013-06-21 09:30:39 · 171 阅读 · 0 评论 -
Tomcat源码解读--代码走读之(二十一的2-4)setState(LifecycleState.STARTING)(四十一)...
调用当前方法的对象是StandardEngine[Catalina] 因为StandardEngine[Catalina]的ls的listeners为1,所以主要是1个listener进行执行。主要是EngineConfig,进行start方法,主要是判断日志的级别。如下图 ...原创 2013-06-22 19:54:12 · 141 阅读 · 0 评论 -
Tomcat源码解读--代码走读之(四十八中的2-4)connector.getService().getContainer().getPipeline().g...
1、获取service为StandardService[Catalina]2、获取container为StandardEngine[Catalina]3、获取pipeline为Pipeline[StandardEngine[Catalina]]4、GetFirst()为org.apache.catalina.core.StandardEngineValve[Catalina],步骤...原创 2013-06-24 10:39:27 · 218 阅读 · 0 评论 -
Tomcat源码解读--代码走读之(四十八中的2-3)setAsyncSupported(五十一)
request.setAsyncSupported(connector.getService().getContainer().getPipeline().isAsyncSupported())1、其中connector.getService().getContainer().getPipeline().isAsyncSupported()的方法内容如下。 是走StandardPi...原创 2013-06-24 10:39:15 · 328 阅读 · 0 评论 -
Tomcat源码解读--代码走读之(四十八中的2-2)postParseRequest(五十)
代码在CoyoteAdapter类中,这里面有4个参数org.apache.coyote.Request req,Request request,org.apache.coyote.Response res, Response response,其中req和res是adapter.service的参数,request和response是之后将要调用方法的参数。1、判断req.schem...原创 2013-06-23 17:29:39 · 370 阅读 · 0 评论 -
Tomcat源码解读--代码走读之(四十七中的2-5-4)(四十九)
其中adapter如上图描述,里面有个对象connector。1、设置request对象和response对象。 2、如下图处理req请求。 (1)、设置处理这个request请求的工作线程名字http-bio-8080-exec-1(2)、判断postParseRequest方法,后续介绍。(3)、request.setAsyncSupported方法...原创 2013-06-23 17:29:18 · 101 阅读 · 0 评论 -
Tomcat源码解读--代码走读之JIoEndpoint$SocketProcessor.run(四十八)
这部分是线程池里某一个线程的执行过程,如下图。代码参考JIoEndpoint.java 1、SSL handshake,serverSocketFactory.handshake(socket.getSocket()),里面没有方法执行。2、state = handler.process(socket,SocketStatus.OPEN),(其中handler就是JIoEn...原创 2013-06-23 17:29:00 · 177 阅读 · 0 评论 -
Tomcat源码解读--代码走读之JIoEndpoint$ Acceptor.run(四十七)
此章以后将会介绍,从socket接受到消息之后的处理过程,代码参考JIoEndpoint.java 线程如下图,是一个单独从socket接受消息的线程。 1、一个死循环一直接受socket的消息2、countUpOrAwaitConnection(),判断是否已经达到连接数量默认200。3、Socket socket = null,等待重新赋值,socket ...原创 2013-06-23 17:28:32 · 180 阅读 · 0 评论 -
Tomcat源码解读--代码走读之(十七中的6)await() stop()(四十六)
server.xml中的属性shutdown=“SHUTDOWN”port=“8005”1、await(),最终代码代码在StandardServer中。(1)、awaitSocket = new ServerSocket(port, 1, InetAddress.getByName(address));其中port=8005,第三个属性= localhost/127.0.0.1...原创 2013-06-23 17:28:05 · 300 阅读 · 0 评论 -
Tomcat源码解读--代码走读之(十八中的3)setStateInternal(LifecycleState.STARTED, null, false)(45...
1、NamingContextListener,在此阶段没动作执行。2、AprLifecycleListener,在此阶段没动作执行。3、JasperListener,在此阶段没动作执行。4、JreMemoryLeakPreventionListener,在此阶段没动作执行。5、GlobalResourcesLifecycleListener,在此阶段没动作执行。6、Thr...原创 2013-06-22 19:55:17 · 251 阅读 · 0 评论 -
Tomcat源码解读--代码走读之(四十二的2-3-2-5)registerHost(host)(四十四)
其中MapperListener mapperListener = new MapperListener(mapper, this) Mapper mapper = new Mapper(),this=connector,代码在connector中。 1、mapper.addHost(host.getName(), aliases, host) (1)、insertMap(...原创 2013-06-22 19:55:07 · 146 阅读 · 0 评论 -
Tomcat源码解读--代码走读之(二十的2-4)connector.start(四十三)
HTTP/1.1与AJP/1.3,只是监听不同的端口,大体上都是相同的。下面介绍HTTP/1.1HTTP/1.1如下图,connector继承了LifecycleBase,所以执行LifecycleBase的start方法。 当前对象图如下。 1、setStateInternal(LifecycleState.STARTING_PREP, null,false),...原创 2013-06-22 19:54:41 · 125 阅读 · 0 评论 -
Tomcat源码解读--代码走读之(二十一的2-5)threadStart(四十二)
调用当前方法的对象是StandardEngine[Catalina],如下图。 1、创建一个daemon线程进行启动,如下图,主要是更换classLoader进行container.backgroundProcess()。系统的classLoader为catalinaLoader在第二章提到过,应用的classLoader为WebappClassLoader。 2、系统的后台...原创 2013-06-22 19:54:26 · 137 阅读 · 0 评论 -
Tomcat源码解读--代码走读之HostConfig.deployDirectory (二十八)
1、检验是否已经部署过,判断deployed和hostHashMap<String, DeployedApplication> deployed=new HashMap<String, DeployedApplication>(); Host host 2、创建DeployedApplication对象,主要有4个属性 3、判断D:\w...原创 2013-06-19 14:23:17 · 237 阅读 · 0 评论 -
Tomcat源码解读--代码走读之(二十六的1-2-4)HostConfig.deployApps()(二十七)
1、获取appbase,appbase为D:\workspace\test_tomcat\apache-tomcat-7.0.22-src\output\build\webapps2、获取configBase,configbase为D:\workspace\test_tomcat\apache-tomcat-7.0.22-src\output\build\conf\Catal...原创 2013-06-19 14:22:56 · 177 阅读 · 0 评论 -
Tomcat源码解读--代码走读之(二十三的3-3-4-)StandardHost的ContainerBase的startInternal(二十六)...
承接上文承接上文23-3-3-4-(2,3),如下图。 1、setState(LifecycleState.STARTING); 因为standardHost的ls的listeners的数量为1,所以去执行里面的listeners方法。(1)、HostConfig,主要是设置一些属,setCopyXML(false);setDeployXML(true);setUnpack...原创 2013-06-19 14:22:32 · 131 阅读 · 0 评论 -
Tomcat源码解读--代码走读之StandardEngine.init(十二)
StandardEngine的listeners为1,是在第六节中的创建digester时注入,如下图 1、setStateInternal(LifecycleState.INITIALIZING, null, false);这个方面里面的1个listeners,主要是根据当前的LifecycleEvent获取StandardEngine对象赋值给Engine 的对象engine,留着...原创 2013-06-16 23:23:16 · 144 阅读 · 0 评论 -
Tomcat源码解读--代码走读之StandardService.init(十一)
StandardService.init的listeners为0,所以这里主要介绍initInternal()方法。一个service主要包括三部分,Engine(这里称作为container),executor,connectors下面分别做介绍。 1、super.initInternal(),调用父类LifecycleMBeanBase的initInternal()方法,主要是注册...原创 2013-06-16 23:22:44 · 142 阅读 · 0 评论 -
Tomcat源码解读--代码走读之NamingResources.init(十)
NamingResources的listeners为0,所以这里只介绍initInternal()方法。其中resources的内容为conf/server.xml里配置的内容,映射的对象如下。 1、调用父类LifecycleMbeanBase的initInternal()方法,注册mbean。2、遍历resources,去注册mbean。...原创 2013-06-15 19:08:01 · 446 阅读 · 0 评论 -
Tomcat源码解读--代码走读之listeners在StandardServer的before_init状态做的事(九)
这节主要介绍listeners在standardServer的before_int状态下,需要做的一些事情,有如下listenners。下面分别做介绍 1、NamingContextListener 在此状态阶段主要是namingResources= ((Server) container).getGlobalNamingResources()。2、AprLifec...原创 2013-06-15 19:07:49 · 208 阅读 · 0 评论 -
Tomcat源码解读--代码走读之StandardServer.init(八)
standardServer.init实际是调用LifecycleBase的init方法,代码如下。 1、setStateInternal(LifecycleState.INITIALIZING, null, false)方法在上文中提到过,主要是遍历相应的listener(StandardServer的lifecycle属性的listener)去处理对一个事件的响应。2、init...原创 2013-06-15 19:07:37 · 199 阅读 · 0 评论 -
Tomcat源码解读--代码走读之lifecycle(七)
Common interface for component life cycle methods. Catalinacomponents may implement this interface (as well as the appropriateinterface(s) for the functionality they support) in order to provide aco...原创 2013-06-15 19:07:26 · 118 阅读 · 0 评论 -
omcat源码解读--代码走读之Catalina. load(六)
承接上文,在执行参数校验和设置之后,就开始执行startupInstance的load();方法,主要有以下内容。 1、 initDirs(),此方法是设置“catalina.home”和“catalina.base”的路径,设置为绝对路径。 2、 initNaming(),此方法是设置Naming,将URL_PKG_PREFIXES = "java.naming...原创 2013-06-15 19:07:09 · 116 阅读 · 0 评论 -
Tomcat源码解读--代码走读之Catalina. load(String args[])(五)
此处为进行参数的校验和设置,之后调用catalina的load()方法。 1、 arguments(String args[]) (1)、如上图判断args.length如果小于1,将调用usage();返回帮助信息,如下 (2)、如上图判断isConfig,其中原String configFile = "conf/server....2013-06-14 18:59:41 · 113 阅读 · 0 评论 -
Tomcat源码解读--代码走读之Catalina.setAwait(四)
此处的代码相对比较简单,就是将startupInstance对象的await属性设置为true。2013-06-14 18:59:10 · 369 阅读 · 2 评论 -
Tomcat源码解读--代码走读之Bootstrap.init;之后的事(三)
随着启动时program arguments的参数传递start,main方法的string[] args参数作为接受,执行了上一节的过程之后,将会进行三个过程,daemon.setAwait(true); daemon.load(args); daemon.start();下面分别介绍一下这三个过程。 1、 daem...2013-06-14 18:51:49 · 113 阅读 · 0 评论 -
Tomcat源码解读--代码走读之Bootstrap.init(二)
bootstrap.init()为main方法的第一步执行过程,这里将介绍bootstrap.init()的主要内容,建议参考代码Bootstrap.java。 1、 setCatalinaHome()通过上一篇文章,运行时的vm arg参数设置catalina.home。-Dcatalina.home="D:\workspace\test_tomcat\...2013-06-14 18:49:00 · 259 阅读 · 0 评论 -
Tomcat源码解读--代码走读之Connector.init(十三)
Connector.init的listeners为0,所以这里主要介绍initInternal()方法。 1、super.initInternal(),调用父类LifecycleMBeanBase的initInternal()方法,主要是注册Mbean。2、初始化adapter(适配器)。3、设置默认的parseBodyMethodsSet方法。4、protocolHand...原创 2013-06-16 23:23:37 · 117 阅读 · 0 评论