- 博客(56)
- 收藏
- 关注
原创 三、Debug调试openjdk
1、概念Objdump:http://baike.baidu.com/view/4788477.htmGdb:http://baike.baidu.com/view/639266.htm(学习中,利器)2、 流程演示1)、编写java文件,new数组产生GC2)、进行编译,开启gdb调试3)、list命令,显示当前代码4)、run命令,运行5)...
2013-06-27 11:53:38 930
原创 二、 编译openjdk
、操作系统1)、ubuntu的版本选择10.102)、安全操作系统选择英文,网络设置桥连接 2、安装必备软件1)、sudo apt-get upgrade 2)、sudo apt-getupdate3)、sudoapt-get install openssh-server(可选安装)4)、sudoapt-get install vim (可选安装) 3...
2013-06-24 10:39:59 151
原创 一、 jdk中的jni方法解读
我们现在常用的jvm虚拟机主要是hotspot,hotspot已经开源,所以大家可以下载到hotspot的源码进行学习和查看。下面我就介绍一下jdk中的jni的方法解读openjdk的官网http://openjdk.java.net/ ,里面搜索hotspot进行点击跳转到http://openjdk.java.net/groups/hotspot/ 然后点击【download...
2013-06-24 10:39:49 610
原创 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
原创 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
原创 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
原创 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
原创 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
原创 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
原创 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
原创 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
原创 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
原创 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
原创 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
原创 Tomcat源码解读--代码走读之(二十一的2-5)threadStart(四十二)
调用当前方法的对象是StandardEngine[Catalina],如下图。 1、创建一个daemon线程进行启动,如下图,主要是更换classLoader进行container.backgroundProcess()。系统的classLoader为catalinaLoader在第二章提到过,应用的classLoader为WebappClassLoader。 2、系统的后台...
2013-06-22 19:54:26 137
原创 Tomcat源码解读--代码走读之(二十一的2-4)setState(LifecycleState.STARTING)(四十一)...
调用当前方法的对象是StandardEngine[Catalina] 因为StandardEngine[Catalina]的ls的listeners为1,所以主要是1个listener进行执行。主要是EngineConfig,进行start方法,主要是判断日志的级别。如下图 ...
2013-06-22 19:54:12 141
原创 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
原创 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
原创 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
原创 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
原创 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
原创 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
原创 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
原创 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
原创 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
原创 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
原创 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
原创 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
原创 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
原创 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
原创 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
原创 Tomcat源码解读--代码走读之(二十四中的2-3-1)Valve.start(二十五)
1、AccessLogValve.start,类关系是:classAccessLogValve extends ValveBase implements AccessLog,abstractclass ValveBase extends LifecycleMBeanBase implements Contained, Valve(1)、调用LifecycleBase的start()方法。...
2013-06-18 01:14:19 119
原创 Tomcat源码解读--代码走读之(二十三中的3-3-4-1)StandardPipelne.start(二十四)
这里先介绍一下conf/server.xml的关系,一个server包含多个service,一个service包含一个engine和多个connector和多个executor,一个engine包含多个子realm和多个host,一个host包含一个pipeline和多个valve。 类关系是:classStandardPipeline extends LifecycleBase ...
2013-06-18 01:14:06 147
原创 Tomcat源码解读--代码走读之(二十一的2-2)StandardHost.start(二十三)
当前对象为StandardEngine[Catalina]。 1、将HashMap<String,Container> children =new HashMap<String,Container>(),转换为数组。复制给children[]。其中children是通过第六节注入进去,也就是server.xml中的<host>。2、进行[Sta...
2013-06-18 01:13:53 101
原创 Tomcat源码解读--代码走读之(二十一的2-1)realm.start(二十二)
这里介绍一下realm,当前对象是LockOutRealm,类继承关系是LockOutRealmextends CombinedRealm,CombinedRealm extends RealmBase,RealmBase extendsLifecycleMBeanBase implements Realm,LifecycleMBeanBaseextends LifecycleBase imp...
2013-06-18 01:13:15 97
原创 Tomcat源码解读--代码走读之(二十的2-2)container.start(二十一)
当前对象为StandardEngine[Catalina],执行间接父类LifecycleBase的start()方法。类继承关系是StandardEngine extends ContainerBase implements Engine,ContainerBaseextends LifecycleMBeanBase implements Container。1、setStateInte...
2013-06-18 01:12:58 103
原创 Tomcat源码解读--代码走读之(十九的4)StandardService. start(二十)
1、setStateInternal(LifecycleState.STARTING_PREP, null, false),其中listeners为0,所以在改阶段没有动作。2、startInternal(),内容如下图。 (1)、setState(LifecycleState.STARTING),因listeners的数量为0,所以此阶段没有动作。(2)、container....
2013-06-17 11:03:28 88
原创 Tomcat源码解读--代码走读之(十八的2)StandardServer. startInternal(十九)
1、fireLifecycleEvent(CONFIGURE_START_EVENT,null),其中CONFIGURE_START_EVENT = "configure_start"。其中6个listeners。(1)、NamingContextListener 1)、将NamingResources的namingResources 赋值为server.xml的Glo...
2013-06-17 11:03:15 167
原创 Tomcat源码解读--代码走读之(十七的4)StandardServer.start(十八)
流程类似第八节,代码如下(在LifecycleBase.java中),其中红色箭头标记的部分为主要流程部分。 1、setStateInternal(LifecycleState.STARTING_PREP, null, false),启动前的不同监听器的动作。 (1)、获得lifecycleEvent为before start。如下图 (2)、6个监听器对这个...
2013-06-17 11:02:58 93
原创 Tomcat源码解读--代码走读之代码走读之daemon.start(十七)
1、daemon.start(),在Bootstrap.java的main方法中。 此过程为通过反射获取catalinaDaemon(上节提到的startupInstance)的start方法,之后进行调用。(在第三节中介绍过)。2、调用Catalina对象的start方法,如下图。 3、判断server是否为null(server是在第六节的第三标题中注入),如果为n...
2013-06-17 11:02:38 145
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人