我們來了解一下部暑war檔案
// deploy wars, and loop if additional descriptors are found
* deploy war files.
*/if (files == null)
return;
for (int i = 0; i < files.length; i++)
}}
* @param contextpath
* @param war
* @param file
*/protected void deploywar(string contextpath, file war, string file)
ostream.write(buffer, 0, n);
}ostream.flush();
ostream.close();
ostream = null;
istream.close();
istream = null;
entry = null;
jar.close();
jar = null;
}} catch (exception e) catch (throwable t)
ostream = null;
}if (istream != null) catch (throwable t)
istream = null;
}} finally catch (throwable t)
jar = null;}}
}//這個是用來存放已經部暑好的檔案
if(log.isinfoenabled())
log.info(sm.getstring("hostconfig.deployjar", file));
try
} finally
}context.setconfigfile(xml.getabsolutepath());
(xml.getabsolutepath(), new long(xml.lastmodified()));
} else
// populate redeploy resources with the war file
(war.getabsolutepath(), new long(war.lastmodified()));
if (context instanceof lifecycle)
context.setpath(contextpath);
context.setdocbase(file);
//以下這一步跟進去,standardcontext的啟動
host.addchild(context);
// if we're unpacking wars, the docbase will be mutated after
// starting the context
if (unpackwars && (context.getdocbase() != null)) else else
}name = name.replace('/', '#');
file docbase = new file(name);
if (!docbase.isabsolute())
//將部暑完的工程存放進該map中
new long(docbase.lastmodified()));
} else
} catch (throwable t)
}
//以下這一步跟進去,standardcontext的啟動
host.addchild(context);
private void addchildinternal(container child) catch (lifecycleexception e) finally }}
firecontainerevent(add_child_event, child);
}}
standardcontext#start//由於裡面的方法過長,就對裡面的個別呼叫進行詳解
public synchronized void start() throws lifecycleexception catch( exception ex )
}}
以上是對環境部暑啟動的簡單除錯過程,沒能全部理解清楚,,會根據後面的除錯補全
new long(docbase.lastmodified()));以備訪問呼叫
Tomcat原始碼 初始化容器五
一,上面文章完成了對server.xml載入以及解析,現在主要做的是就是對裡面所定義的容器進行初始化工作.檢視org.apache.catalina.startup.catalina load standarserver開始進行例項化 server.initialize 預設情況下是org.apac...
六 Tomcat 原始碼系列之 請求處理
前面已經詳細介紹了 tomcat 的執行緒模型,那麼對於乙個請求,tomcat 到底是如何處理的呢 由 nioendpoint 的內部類 acceptor 監聽連線 acceptor 實現類 runable 介面,直接檢視 run 方法 int errordelay 0 一直迴圈,直到收到 shut...
tomcat原始碼學習2 啟動過程
這一次將會對tomcat的啟動過程進行乙個分析。tomcat的入口函式是 org.apache.catalina.startup.main 在這個函式中最關鍵的 段是 public static void main string args if command.equals startd else ...