一,上面文章完成了對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容器啟動的入口,後邊會牽扯...