host和engine
在catalina中engine代表catalina實體,host代表乙個虛擬的主機,engine包括多個host,乙個host包括多個context。
在tomcat中host用org.apache.catalina.host介面表示:
public inte***cehostextendscontainercatch(throwable t)
}// set dispatcher valve
addvalve(newerrordispatchervalve());
super.start();
當http請求來的時候,host的invoke方法會被呼叫,其中會呼叫到standardhostvalue的invoke方法,通過呼叫host的map方法找到正確的context來處理請求:
publiccontext map(string uri)
// if no context matches, select the default context
if(context ==null)
// complain if no context has been selected
if(context ==null)
if(debug > 0)
return(context);
publiccontainer map(request request,booleanupdate)
return(context);
standardhostvalue是standardhost的基礎value,其中invoke方法實現如下:
在這裡,它首先獲取匹配的context,然後獲得session並呼叫session的access方法更新session的操作時間,最後呼叫context的invoke方法。
publicurl getresource(string path)
throwsmalformedurlexceptioncatch( privilegedactionexception pe)
}else
}catch(exception e)
}return(null);
engine表示catalina的servlet引擎實體,如果你要用到多個host就必須用到engine,在tomcat中引擎用org.apache.catalina.engine介面來實現。通常情況下tomcat部署的時候都會用到engine。
當驗證了請求(request)和響應(response)的型別以後,呼叫engine的map方法獲取host用來處理來自客戶端的http請求。
How Tomcat Works學習筆記《六》
生命週期 catalina包括很多元件,當catalina啟動的時候,也需要啟動這些元件,當關閉catalina的時候同時也需要關閉這些元件。tomcat通過事件機制來實現這種控制,所有的元件都實現org.apache.catalina.lifecycle介面 packageorg.apache.c...
how tomcat works 第十三章
本章要討論的兩個主題是主機 host 和引擎 engine 如果需要在乙個 tomcat 部署中部署多個上下文,需要使用乙個主機。理論上,當只有乙個上下文容器的時候不需要主機,正如 org.apache.catalina.context 介面中描述的那樣。但是實踐中,乙個 tomcat 部署往往需要...
《How Tomcat Works》第三章 聯結器
前面第二章講的是簡單的servlet容器,其中httpserver類負責等待http請求,然後構建解析request,response,之後再通過classloader呼叫servlet的service方法或者說直接呼叫靜態資源。到了第三章,就將上一章中的httpserver類中的等待接受http請...