時間:2023-07-15 05:42:01 | 來源:網(wǎng)站運營
時間:2023-07-15 05:42:01 來源:網(wǎng)站運營
學(xué)習(xí)Tomcat(四)之Engine和Host容器:在前面的文章中,我們介紹了Tomcat的連接器Connector,連接器會監(jiān)聽指定的端口,并把接受到的消息轉(zhuǎn)為HttpServletRequest和HttpServletResponse,交個Servlet容器處理。Tomcat的Servlet容器分為四種:Engin容器/Host容器/Context容器/Wrapper容器,這四個容器之間是父子關(guān)系,Engine容器包含Host容器,Host容器包含Context,Context包含Wrapper容器。本文會介紹Tomcat容器中的Engin容器和Host容器,在下一篇文章中會介紹Context容器和Wrapper容器。invoke(Request request,Response response)
。 <Engine name="Catalina" defaultHost="localhost"> <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <!-- 默認(rèn) Valve --> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt" <!-- maxDays="5" --> pattern="%h %l %u %t "%r" %s %b" /> <!-- 自定義 valve --> <Valve className="org.apache.catalina.valves.WswAccessValve"/> </Host> </Engine>
invoke(Request request,Response response)
,但是作用和Piple中的閥門不同,主要用于將請求傳遞到下一個容器或者對應(yīng)的Servlet組件。StandardEngineValve
,這個Valve會讀取Request中的Host信息,然后把請求路由給對應(yīng)的Host容器。final class StandardEngineValve extends ValveBase { public StandardEngineValve() { super(true); } @Override public final void invoke(Request request, Response response) throws IOException, ServletException { // Ignore some code here. // Select the Host to be used for this Request Host host = request.getHost(); // Ignore some code here. // Ask this Host to process this request host.getPipeline().getFirst().invoke(request, response); }}
<Host name="www.ramki.com" appbase="ramki_webapps" /><Host name="www.krishnan.com" appbase="krishnan_webapps" /> <Host name="www.blog.ramki.com" appbase="blog_webapps" />
GET /appA/servletA/some-url HTTP/1.1 Host: www.ramki.com Proxy-Connection: keep-alive User-Agent: Mozilla/5.0 (Windows NT 6.2) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11 Accept: text/html,application/xhtml+xml,application/xml;q=0.9Accept-Encoding: gzip,deflate,sdch Accept-Language: en-US,en;q=0.8
本文最先發(fā)布至微信公眾號,版權(quán)所有,禁止轉(zhuǎn)載!
關(guān)鍵詞:容器,學(xué)習(xí)
微信公眾號
版權(quán)所有? 億企邦 1997-2025 保留一切法律許可權(quán)利。