tomcat 與 jvm關係
現象:
一個tomcat可以有多個web應用,當它啟動時,會啟動一個jvm程序。多個tomcat,會啟動多個jvm程序。
原因:
Tomcat是一個JSP/Servlet容器。其作為Servlet容器,有三種工作模式:獨立的Servlet容器、程序內的Servlet容器和程序外的Servlet容器。
Tomcat Server處理一個HTTP請求的過程:
描述:
1、使用者點選網頁內容,請求被髮送到本機埠8080,被在那裡監聽的Coyote HTTP/1.1 Connector獲得。 2、Connector把該請求交給它所在的Service的Engine來處理,並等待Engine的迴應。 3、Engine獲得請求localhost/test/index.jsp,匹配所有的虛擬主機Host。 4、Engine匹配到名為localhost的Host(即使匹配不到也把請求交給該Host處理,因為該Host被定義為該Engine的預設主機),名為localhost的Host獲得請求/test/index.jsp,匹配它所擁有的所有的Context。Host匹配到路徑為/test的Context(如果匹配不到就把該請求交給路徑名為“ ”的Context去處理)。 5、path=“/test”的Context獲得請求/index.jsp,在它的mapping table中尋找出對應的Servlet。Context匹配到URL PATTERN為*.jsp的Servlet,對應於JspServlet類。 6、構造HttpServletRequest物件和HttpServletResponse物件,作為引數呼叫JspServlet的doGet()或doPost().執行業務邏輯、資料儲存等程式。 7、Context把執行完之後的HttpServletResponse物件返回給Host。 8、Host把HttpServletResponse物件返回給Engine。 9、Engine把HttpServletResponse物件返回Connector。 10、Connector把HttpServletResponse物件返回給客戶Browser。