標(biāo)題和上一篇很像,所以特別強調(diào)一下,這個是Tomcat對象的。
從TomcatEmbeddedServletContainer的this.tomcat.start()開始,主要是利用LifecycleBase對這一套容器(engine,host,context及wrapper)進行啟動并發(fā)布諸如configure_start、before_init、after_start的lifecycleEvent事件給相應(yīng)的監(jiān)聽器(如果有的話)。進入start,因為此時狀態(tài)是LifecycleState.NEW,所以會執(zhí)行init方法:
public final synchronized void init() throws LifecycleException { if(!this.state.equals(LifecycleState.NEW)) { this.invalidTransition("before_init"); } try { this.setStateInternal(LifecycleState.INITIALIZING, (Object)null, false); this.initInternal(); this.setStateInternal(LifecycleState.INITIALIZED, (Object)null, false); } catch (Throwable var2) { ExceptionUtils.handleThrowable(var2); this.setStateInternal(LifecycleState.FAILED, (Object)null, false); throw new LifecycleException(sm.getString("lifecycleBase.initFail", new Object[]{this.toString()}), var2); } }
延伸閱讀
學(xué)習(xí)是年輕人改變自己的最好方式