自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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 894

原创 二、 编译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 131

原创 一、 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 561

原创 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 148

原创 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 200

原创 Tomcat源码解读--代码走读之(四十八中的2-3)setAsyncSupported(五十一)

request.setAsyncSupported(connector.getService().getContainer().getPipeline().isAsyncSupported())1、其中connector.getService().getContainer().getPipeline().isAsyncSupported()的方法内容如下。 是走StandardPi...

2013-06-24 10:39:15 291

原创 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 358

原创 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 78

原创 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 164

原创 Tomcat源码解读--代码走读之JIoEndpoint$ Acceptor.run(四十七)

    此章以后将会介绍,从socket接受到消息之后的处理过程,代码参考JIoEndpoint.java    线程如下图,是一个单独从socket接受消息的线程。 1、一个死循环一直接受socket的消息2、countUpOrAwaitConnection(),判断是否已经达到连接数量默认200。3、Socket socket = null,等待重新赋值,socket ...

2013-06-23 17:28:32 164

原创 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 285

原创 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 239

原创 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 126

原创 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 110

原创 Tomcat源码解读--代码走读之(二十一的2-5)threadStart(四十二)

调用当前方法的对象是StandardEngine[Catalina],如下图。 1、创建一个daemon线程进行启动,如下图,主要是更换classLoader进行container.backgroundProcess()。系统的classLoader为catalinaLoader在第二章提到过,应用的classLoader为WebappClassLoader。  2、系统的后台...

2013-06-22 19:54:26 123

原创 Tomcat源码解读--代码走读之(二十一的2-4)setState(LifecycleState.STARTING)(四十一)...

   调用当前方法的对象是StandardEngine[Catalina]     因为StandardEngine[Catalina]的ls的listeners为1,所以主要是1个listener进行执行。主要是EngineConfig,进行start方法,主要是判断日志的级别。如下图 ...

2013-06-22 19:54:12 112

原创 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 140

原创 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 105

原创 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 86

原创 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 156

原创 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 207

原创 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 142

原创 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 210

原创 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 138

原创 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 127

原创 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 115

原创 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 100

原创 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 140

原创 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 216

原创 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 146

原创 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 115

原创 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 105

原创 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 141

原创 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 87

原创 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 84

原创 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 88

原创 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 75

原创 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 156

原创 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 83

原创 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 134

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除