Tomcat原始碼 初始化容器五

2021-08-30 12:50:58 字數 2855 閱讀 6103

一,上面文章完成了對server.xml載入以及解析,現在主要做的是就是對裡面所定義的容器進行初始化工作.

檢視org.apache.catalina.startup.catalina#load()

//standarserver開始進行例項化

server.initialize();  

預設情況下是org.apache.catalina.core.standardserver#initialize的初始化....

public void initialize()

throws lifecycleexception

//容器週期的通知,這裡使用了adapter,observer模式,以下文章對其詳解

lifecycle.firelifecycleevent(init_event, null);

//已經初始化

initialized = true;

if( oname==null ) catch (exception e)

}// register global string cache

try catch (exception e)

// initialize our defined services

//按著server.xml裡的流程,初始化完server完再初始化standardservice

for (int i = 0; i < services.length; i++)

}

初始化

/**

* invoke a pre-startup initialization. this is used to allow connectors

* to bind to restricted ports under unix operating environments.

*/public void initialize()

throws lifecycleexception

initialized = true;

if( oname==null )

} catch (exception e)

}if( server==null )

// initialize our defined connectors

//往下一級初始化就是connector 兩個 如8080 8009

synchronized (connectors)

}}

現在進入org.apache.catalina.connector#initialize

/**

* initialize this connector (create serversocket here!)

*/public void initialize()

throws lifecycleexception

this.initialized = true;

if( oname == null && (container instanceof standardengine)) catch (exception e)

if(log.isdebugenabled())

log.debug("creating name for connector " + oname);

}// initializa adapter

//對adapter的初始化,並把connector設定進去

adapter = new coyoteadapter(this);

//以下物件在建構函式中已經例項化,把adapter設定進去

}

org.apache.tomcat.util.net.jioendpoint#init   這個類裡面對socket進行了設定,以後每一次通訊都從這個類開始

public void init()

throws exception

if (serversocketfactory == null)

if (serversocket == null) else

} catch (bindexception be)

}//if( servertimeout >= 0 )

// serversocket.setsotimeout( servertimeout );

initialized = true;

}

到這裡tomcat的初始化工作已經基本完成,接下來進行相應容器的啟動處理

Tomcat原始碼之 初始化

1.首先設定catalina 的路徑和初始化classloader 2.利用反射模式啟動catalila catalila.load 的時候 初始化相應的容器 img catalila.start 啟動的時候,把相應的容器同事啟動 按從大到小依次啟動 先啟動server,在service,然後eng...

Spring原始碼研究 容器初始化

新建乙個容器,看看後面幹了啥 xmlbeandefinitionreader.loadbeandefinitions resource line 302 我們用string指定了xml配置檔案的路徑,spring要將其封裝到resource方便io,這裡的resource指的就是我們的配置 之後經過...

SpringIOC 初始化原始碼解析

springioc容器的關鍵兩個主要的容器系列 寫了段簡單的 ioc容器的具體的過程都在這一句話上 後台很硬的 下面咱們就來看看ioc的後台是多麼的硬,加了斷點除錯了下,跳進去的第一步是 public throws bean ception 上面 的refresh 是ioc容器啟動的入口,後邊會牽扯...