StandardContext初始化过程
StandardContext
的启动主要由startInternal ()完成的
本方法主要完成以下功能:
1.所有Children容器[wrapper]的启动
2.初始化WebappLoader
3.实例化contextManager并启动
等………
启动过程源码:
//org.apache.catalina.core.StandardContext#startInternal
// 子容器启动
for (Container child : findChildren()) {
if (!child.getState().isAvailable()) {
child.start();
}
}
//初始化WebappLoader
if (getLoader() == null) {
WebappLoader webappLoader = new WebappLoader(getParentClassLoader());
webappLoader.setDelegate(getDelegate());
setLoader(webappLoader);
}
//实例化contextManager ,用于管理session
Manager contextManager = null;
try {
contextManager = getCluster().createManager(getName());
} catch (Exception ex) {
log.error("standardContext.clusterFail", ex);
ok = false;
}
setManager(contextManager);
//1.
//初始化所有Listener实例,
if (ok) {
if (!listenerStart()) {
log.error( "Error listenerStart");
}
}
//2.
try {
// 启动StandardManager,该类管理Session信息
if ((manager != null) && (manager instanceof Lifecycle)) {
((Lifecycle) getManager()).start();
}
//启动后台线程, 检查seesion超时
super.threadStart();
}
//3. 初始化 application filters
if (ok) {
if (!filterStart()) {
log.error("Error filterStart");
ok = false;