本文主要是介绍Tomcat源码解读--代码走读之(二十四中的2-3-1)Valve.start(二十五),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1、AccessLogValve.start,类关系是:classAccessLogValve extends ValveBase implements AccessLog,abstractclass ValveBase extends LifecycleMBeanBase implements Contained, Valve
(1)、调用LifecycleBase的start()方法。
1)、init方法
1))、setStateInternal(LifecycleState.INITIALIZING,null, false);因为AccessLogValve的ls的listeners为0,所以没有方法执行。
2))、initInternal(),首先是调用ValveBase的initInternal(),调用super(LifecycleMBeanBase)的initInternal(),注册mbean。
3))、setStateInternal(LifecycleState.INITIALIZED,null, false); 因为AccessLogValve的ls的listeners为0,所以没有方法执行。
2)、setStateInternal(LifecycleState.STARTING_PREP, null, false); 因为AccessLogValve的ls的listeners为0,所以没有方法执行。
3)、startInternal();调用AccessLogValve的startInternal()方法
1))、设置时间的格式
2))、open()方法。
1)))、File dir 为D:\workspace\test_tomcat\apache-tomcat-7.0.22-src\output\build\logs
2)))、Filepathname;为D:\workspace\test_tomcat\apache-tomcat-7.0.22-src\output\build\logs\localhost_access_log.2012-09-11.txt
3)))、设置Charset charset为gbk
4)))、定义PrintWriter writer和File currentLogFile
3))、setState(LifecycleState.STARTING);因为AccessLogValve的ls的listeners为0,所以没有方法执行。
4)、setStateInternal(LifecycleState.STARTED,null, false); 因为AccessLogValve的ls的listeners为0,所以没有方法执行。
2、ErrorReportValve.start(),类关系是,ErrorReportValve extends ValveBase,ValveBase extendsLifecycleMBeanBase implements Contained, Valve
(1)、调用LifecycleBase的start()方法。
1)、init方法
1))、setStateInternal(LifecycleState.INITIALIZING,null, false);因为ErrorReportValve的ls的listeners为0,所以没有方法执行。
2))、initInternal(),首先是调用ValveBase的initInternal(),调用super(LifecycleMBeanBase)的initInternal(),注册mbean。
3))、setStateInternal(LifecycleState.INITIALIZED,null, false); 因为ErrorReportValve的ls的listeners为0,所以没有方法执行。
2)、setStateInternal(LifecycleState.STARTING_PREP, null, false); 因为ErrorReportValve的ls的listeners为0,所以没有方法执行。
3)、startInternal();调用ValvBasee的startInternal()方法,因为ErrorReportValve的ls的listeners为0,所以没有方法执行。
4)、setStateInternal(LifecycleState.STARTED, null, false); 因为ErrorReportValve的ls的listeners为0,所以没有方法执行。
3、StandardHostValve.start(),类关系是,StandardHostValve extends ValveBase,ValveBase extends LifecycleMBeanBase implements Contained, Valve
(1)、调用LifecycleBase的start()方法。
1)、init方法
1))、setStateInternal(LifecycleState.INITIALIZING,null, false);因为StandardHostValve的ls的listeners为0,所以没有方法执行。
2))、initInternal(),首先是调用ValveBase的initInternal(),调用super(LifecycleMBeanBase)的initInternal(),注册mbean。
3))、setStateInternal(LifecycleState.INITIALIZED,null, false); 因为StandardHostValve的ls的listeners为0,所以没有方法执行。
2)、setStateInternal(LifecycleState.STARTING_PREP, null, false); 因为StandardHostValve的ls的listeners为0,所以没有方法执行。
3)、startInternal();调用ValvBasee的startInternal()方法,因为StandardHostValve的ls的listeners为0,所以没有方法执行。
4)、setStateInternal(LifecycleState.STARTED,null, false); 因为StandardHostValve的ls的listeners为0,所以没有方法执行。
这篇关于Tomcat源码解读--代码走读之(二十四中的2-3-1)Valve.start(二十五)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!