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,所以没有方法执行。

猜你喜欢

转载自83519144.iteye.com/blog/1886992