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中AccessLogValve、ErrorReportValve和StandardHostValve的启动流程,包括初始化状态、内部开始方法的具体步骤及文件操作等细节。
Valve.start(二十五)&spm=1001.2101.3001.5002&articleId=84443950&d=1&t=3&u=e5ac6eb99ae740999140b57b377607bf)
1538

被折叠的 条评论
为什么被折叠?



