tomcat核心概念及應用
Tomcat 核心元件及配置檔案解讀
Java 2 EE 計數體系包含如 Serverlet , JSP , JMX 等等。
以OpenJDK為例,當前比較常用的有1.6.0、1.7.0、1.8.0等版本,當一臺主機上有多個OpenJDK時,可使用 "alternatives" 命令設定預設使用的版本。
Java程式碼的執行:*.java(source code) --> javac --> *.class(bytecode)
JSP :Java Server Page> JSP Container : JSP + Servlet Container
基於jasper將靜態輸出的資料轉為java程式碼進行輸出,結果為servlet規範的程式碼
.jsp -->jasper--> .java --> javac --> .class --> jvm
tomcat 是JSP Container的開源實現,tomcat是 Java 2 EE 技術體系的不完整實現,tomcat在使用前需要部署Java環境。
JSP Container 技術的商業實現包括:WebSphere, WebLogic, Oc4j, Glassfish, Geronimo, JOnAS, JBoss等等
JSP Container 技術的開源實現包括:Tomcat, Jetty, Resin
Tomcat預設配置檔案及結構框架:
html語言嵌入式風格
tomcat的配置檔案:
server.xml:主配置檔案
web.xml:每個webapp只有“部署”後才能被訪問,它的部署方式通常由web.xml進行定義,其存放位置為WEB-INF/目錄中;此檔案為所有的webapps提供預設配置
context.xml:每個web都可以專用的配置檔案,它通常由專用的配置檔案context.xml來定義,其存放位置為WEB-INF/目錄中;此檔案為所有的webapps提供預設配置
tomcat-users.xml:使用者認證的賬號和密碼檔案
tomcat的主配置檔案及各元件的框架結構詳解
tomcat主配置檔案的預設配置例項:
<?xml version='1.0' encoding='utf-8'?>
<Server port="8005" shutdown="SHUTDOWN">
<Service name="Catalina">
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
<Engine name="Catalina" defaultHost="localhost">
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="%h %l %u %t "%r" %s %b" />
</Host>
</Engine>
</Service>
</Server>
元件詳解:每個元件都由一個Java“類”實現,這些元件大體可分為以下幾個型別:
頂級元件:Server
一個Server可包含多個Service代表tomcat instance,即表現出的一個java程序;監聽在8005埠,只接收“SHUTDOWN”。
各server監聽的埠不能相同,因此,在同一物理主機啟動多個例項時,需要修改其監聽埠為不同的埠
服務類元件:Service
一個Service中僅能有一個Engine
一個Engine可對應多個Connector,但一個Connector僅能對應一個Engine用於實現將一個或多個connector元件關聯至一個engine元件
聯結器元件:http, https, ajp
負責接收請求,常見的有三類http/https/ajp;
進入tomcat的請求可分為兩類:
1. standalone : 請求來自於客戶端瀏覽器;
2. 由其它的web server反代:來自前端的反代伺服器;
nginx --> http connector --> tomcat
httpd(proxy_http_module) --> http connector --> tomcat
httpd(proxy_ajp_module) --> ajp connector --> tomcat
Connector屬性
port="8080"
protocol="HTTP/1.1"
connectionTimeout="20000"
address:監聽的IP地址;預設為本機所有可用地址
maxThreads:最大併發連線數,預設為200
enableLookups:是否啟用DNS查詢功能
acceptCount:等待佇列的最大長度
容器類:Engine, Host, Context
一個Engine中可包含多個Host,一個Host中可包含多個Context
Engine元件:Servlet例項,即servlet引擎,其內部可以一個或多個host元件來定義站點,通常需要通過defaultHost來定義預設的虛擬主機
Engine屬性
name=" "
defaultHost="localhost"
jvmRoute=" "
Host元件:位於engine內部用於接收請求並進行相應處理的主機或虛擬主機
Host屬性
1. appBase:此Host的webapps的預設存放目錄(/var/lib/tomcat/webapps),指存放非歸檔的web應用程式的目錄或歸檔的WAR檔案目錄路徑;可以使用基於$CATALINA_BASE變數所定義的路徑的相對路徑
2. autoDeploy:在Tomcat處於執行狀態時,將某webapp放置於appBase所定義的目錄中時,是否自動將其部署至tomcat。