- 博客(21)
- 资源 (2)
- 收藏
- 关注
原创 tomcat源码研读笔记—tomcat的接收请求之五 StandardWrapper接收请求
StandardWrapper的继承关系:从StandardWrapper的继承关系,我们根据之前的经验也可以推到出接收请求的过程了: 1, 调用了ContainerBase中的Invoke方法2, 进而调用了实现valve接口的StandardWrapperValve的invoke方法publicvoid invoke(Request request, Response response, ...
2018-03-22 08:54:23
438
原创 tomcat源码研读笔记—tomcat的接收请求之四 StandardContext接收请求
StandardContext继承关系:根据继承关系,我们可以知道,跟之前处理请求的机制基本是一致的。只是standardContext重写了父类的invoke方法: public void invoke(Request request, Response response) throws IOException, ServletException { // Wait i...
2018-03-22 08:54:14
428
原创 tomcat源码研读笔记—tomcat的接收请求之三 StandardHost接收请求
在研读StandardHost的时候,我们再查看下它的继承关系:我们会发现其实它跟StandardEngine的继承关系是很相似的,只是变了个Host接口和多个个Deployer接口而已,其他都是一样的。 同样的1, 调用了ContainerBase中的Invoke方法2,进而掉用了valve的invoke方法,而这里实现了valve接口的实现类是StandardHostValve3,这个时候...
2018-03-22 08:54:04
1160
原创 tomcat源码研读笔记—tomcat的接收请求之二 StandardEngine接收请求
根据上一章节的分析,我们知道HttpProcessor最后根据请求信息,构建好request和response之后,调用HttpConnector容器的invoke方法: connector.getContainer().invoke(request,response)将请求传递给了HttpProcessor的容器,那么我们的疑问来了,这个container究竟是谁呢?它的实现类在哪里?如果我...
2018-03-22 08:53:55
301
原创 tomcat源码研读笔记—tomcat的接收请求之一 HttpProcessor接收请求
根据之前的剖析,我们知道tomcat启动好之后,一直在等待这个请求,而这个等待请求的过程就是在HttpConnector的run方法里边,我们可以认为在tomcat启动好之后,就开启了线程在等待着前端发过来的请求:while (!stopped){ // Accept the next incomingconnection from the server socket ...
2018-03-22 08:53:44
734
原创 tomcat源码研读笔记—tomcat的启动之七 HttpConnector的启动
我们从启动流程图上可以了解到,当standardWrapper启动完成之后,那么返回到standardService的start方法里边时,会执行HttpConnector的start方法:HttpConnector的start方法源码:public void start() throwsLifecycleException { // Validate and update our ...
2018-03-22 08:53:25
249
原创 tomcat源码研读笔记—tomcat的启动之六 StandardWrapper的启动
StandardWrapper的继承关系类图如下:我们查看standardWrapper的start方法的源码: public void start() throws LifecycleException { // Start up this component super.start(); // Load and initialize an instanc...
2018-03-21 17:32:24
254
原创 tomcat源码研读笔记—tomcat的启动之五 StandardContext的启动
我们首先看下StandardContext的继承关系:然后查看starndardContext的start方法源码:public synchronized void start() throwsLifecycleException { if (started) throw new LifecycleException (sm.getStr...
2018-03-21 17:32:14
692
原创 tomcat源码研读笔记—tomcat的启动之四 StandardHost的启动
我们首先了解下standardHost的继承关系:然后查看start代码如下: public synchronized void start() throwsLifecycleException { // Set error report valve if ((errorReportValveClass != null) && (!err...
2018-03-21 17:32:02
779
原创 tomcat源码研读笔记—tomcat的启动之三 StandardEngine的启动
这一章节开始,我们进入了所谓的“容器”内部了,standardEngine启动的源码如下: public void start() throws LifecycleException { // Log our server identification information System.out.println(ServerInfo.getServerInfo());...
2018-03-21 17:31:45
1235
原创 tomcat源码研读笔记—tomcat的启动之二 StandardService的启动
我们打开standardService类,查看start方法如下:public void start() throwsLifecycleException { // Validate and update our current component state if (started) { throw new LifecycleException ...
2018-03-21 17:31:33
334
原创 tomcat源码研读笔记—tomcat的启动之一 StandardServer的启动
我们在流程图上可以知道,当HttpConnector初始化完之后,那么程序将返回到Catalina类,开始调用standardServer的start方法,开始standardServer的启动流程了,所以我们返回到standardServer的start方法中进一步探究,源码如下:public void start() throws LifecycleException{ // Va...
2018-03-21 17:31:23
374
原创 tomcat源码研读笔记—tomcat的初始化之三 HttpConnector的初始化
现在我们来到了HttpConnector的世界里,开始了解初始化之道。剑指初始化方法initialize:public void initialize() throws LifecycleException { if (initialized) throw new LifecycleException ( sm.getString("...
2018-03-21 17:31:00
220
原创 tomcat源码研读笔记—tomcat的初始化之二 StandardService的初始化
这一章节,我们来研读下StandardService,查看initialize方法源码如下: public void initialize() throws LifecycleException { if (initialized) throw new LifecycleException ( sm.getString(...
2018-03-21 17:30:47
356
原创 tomcat源码研读笔记—tomcat的初始化之一 StandardServer的初始化
由上一章节我们可以知道,Catalina已经教棒给StandardServer了,我们可以直接打开StandardServer类,在打开的时候,我们要留意下static属性以及standardServer的构造方法,这些属性和构造函数的一些赋值在后继的调用中,将会使用到的:属性如: private static String exceptions[][] = { {"org.apa...
2018-03-21 17:30:34
412
原创 tomcat源码研读笔记—Catalina类
之前一直想了解tomcat的工作原理,苦于项目繁杂,无法深入源码进行了解;最近由于不招领导待见,手头项目急剧下降,正好有空最近好好看下tomcat的源码,写写研读笔记!我们在研读tomcat源码的时候,一开始就从简入手,由简至繁,只要抓住了主线,一些细节在研读的过程中将慢慢清晰。所以我们首先由catalina类的start()方法入手,前面的Boostrap类,.bat,.sh等文件的研读,等...
2018-03-21 17:28:38
418
原创 Log4j源码阅读之四—doConfigure方法
我们在阅读 public void doConfigure(Properties properties, LoggerRepository repository) 这个方法的源码的时候,我这里就不讲源码再粘贴出来了,我们大概了解这个方法分别调用如下几个主要的方法,其他都是一些判断1,attachListAppender(repository);2,configureRootCateg
2015-10-21 18:43:01
729
原创 Log4j源码阅读之三—initialConfiguration方法
上回我们已经对LogManager类的静态程序块进行了部分解读,现在再次将源码贴上,如下是LogManager类静态程序块全部源码+注释static { // Check debug // 1,从运行环境获取log4j.debug的配置值 String debugProp = System.getProperty("log4j.debug"
2015-10-21 09:09:00
546
原创 Log4j源码阅读之二—LogManager的静态程序块
我们带着上回的疑问到源码去找答案:我们查看LogManager这个类源码的时候发现,这个类里边有个静态程序块,源码如下:(源码过长,此处不一一展示)我们都知道静态程序块,在LogManager初始化的时候,就会将static的静态程序块在JVM机上执行并且只执行了一次(第二次不再执行)。那么我们可以大胆肯定,我们之前的疑问,必定在这个类的LogManager的静态程
2015-10-20 15:17:57
2704
原创 Log4j源码阅读之一—Logger的获取
本次Log4j源码研读的入口,是从 logger = Logger.getLogger("test"),这个方法调用开始,我们看看下边是时序图:下边是对上述时序图的解读:我们actioner通过调用Logger.getLogger("test")方法的时候,会提交的Logger类的静态方法getLogger,这个静态方法源码如下: public static Logger ge
2015-10-20 14:36:03
2692
原创 spring @Value加载配置值
当我们在JAVA代码中使用ApplicationContext ac = new ClassPathXmlApplicationContext("classpath:spring.xml");进行spring 配置文件加载的时候,想把spring.xml文件里边的 classpath*:dataInfo.prop
2015-10-16 10:50:50
1129
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人