一. 簡介
Apache的一個子項目,是一款Servlet/JSP容器。
Servlet是一種伺服器端的Java應用程式,具有獨立于平台和協定的特性,可以生成動态的Web頁面。 它擔當客戶請求與伺服器響應的中間層。Servlet是位于Web 伺服器内部的伺服器端的Java應用程式,與傳統的從指令行啟動的Java應用程式不同,Servlet由Web伺服器進行加載,該Web伺服器必須包含支援Servlet的Java虛拟機。
二.Servlet容器調用Servlet處理請求/響應過程
- 當客戶請求通路某個Servlet時,Servlet容器将建立一個ServletRequest對象和ServletResponse對象;
- 在ServletRequest對象中封裝了客戶請求資訊,然後Servlet容器把ServletRequest對象傳給客戶所請求的Servlet;
- Servlet把響應結果寫在ServletResponse中,由Servlet容器把響應結果傳給客戶。
三. tomcat結構
tomcat伺服器是由一系列可配置的元件構成,其中核心元件是Servlet容器,它是所有其他Tomcat元件的頂層容器。可以在server.xml檔案中進行配置,每個Tomcat元件在server.xml檔案中對應一種配置元素。
<Server> //Servlet容器
<Service>
<Connector/> //連接配接器。和客戶實際互動的元件,它負責接受客戶的請求,以及想客戶傳回響應結果。
......
<Connector/>
<Engine>
<Host> //虛拟主機
<Context></Context> //運作在虛拟主機上的單個web應用。
......
<Context></Context>
</Host>
......
<Host>
......
</Host>
</Engine>
</Service>
......
<Service>
......
</Service>
</Server>
頂層配置元素 <Server> 和<Service>;
連接配接器類元素 <Connector> 介于客戶服務之間的通信接口,負責将客戶的請求發送給伺服器,并将伺服器的響應結果傳遞給客戶;
容器類元素 <Engine>,<Host>,<Context>處理客戶請求并生成響應結果的元件
嵌套類元素 <Loger>,<Value>,<Realm> 可以加入到容器中的元件
<Server> 元素代表整個Servlet容器,它是Tomcat執行個體的頂層元素。<Server>元素中可以包含一個或多個<Service>元素。
<Service> 包含一個<Engine>元素,以及一個或多個<Connector>元素,這些<Connector>元素共享同一個<Engine>元素
<Connector>代表和客戶實際互動的元件,它負責接受客戶的請求,以及想客戶傳回響應結果。
<Engine> 每個<Service>元素隻能包含一個<Engine>元素。<Engine>元素處理在同一個<Service>中所有<Connector>元素接收到的客戶請求。
<Host> 一個<Engine>可以包含多個<Host>元素。每個<Host>元素定義了一個虛拟主機,它可以包含一個或多個Web應用。每個Web應用必須有唯一的URL路徑,這個URL路徑在<Context>元素的path屬性中設定。如:<Context path=“/child” docBase=“web-test” debug=“0” Reloadable=“true”>。reloadable為true,則tomcat運作中會動态監視class等檔案的改動,如果監視到有class檔案被更新,tomcat會自動重新加載Web應用。開發階段設為true,釋出階段設為false.通路時:www.xxx.com/child-->webapps/test.
如:
<Host name="localhost" appBase="/opt/webapps" unpackWARs="true" autoDeploy="true">
<Context path="/adu" docBase="adu-web" debug="0" reloadable="false"></Context>
</Host>
則:www.xxx.com/adu-->/opt/webapps/adu-web
四. JAVA web應用
Java Web應用由一組靜态HTML頁面,Servlet,JSP和其他的class組成。每種元件在Web應用中都有固定的存放目錄。
Java Web應用通過一個基于XML的釋出描述符檔案來配置其釋出資訊,這個檔案名為web.xml。
五. 部署
部署一個新的tomcat需要修改的地方:
1)bin/catalina.sh(調試設定)
CATALINA_OPTS="-server -Xdebug -Xnoagent -Djava.compiler=NONE -DDEBUG_ENV -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=35577"
# OS specific support........
2)conf/server.xml
<Server port="45742" shutdown="SHUTDOWN">
......
<Connector port="45741" protocol="HTTP/1.1" maxThreads="2000" acceptCount="2000" connectionTimeout="20000" redirectPort="45743" />
......
<Connector port="45744" protocol="AJP/1.3" redirectPort="45743" />
.....
<Host name="localhost" appBase="/opt/webapps" unpackWARs="true" autoDeploy="true">
<Context path="" docBase="adu-web" debug="0" reloadable="false"></Context>
</Host>
......
- 作者:水岩
- 出處:http://www.cnblogs.com/waterystone
- 本部落格中未标明轉載的文章歸作者水岩和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利。
如果您覺得本文對您的學習有所幫助,可通過支付寶(左) 或者 微信(右) 來打賞部落客,增加部落客的寫作動力