How Tomcat Works學習筆記《十二》

2021-05-28 02:54:23 字數 3330 閱讀 8117

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請...