1.匹配服務
如果有兩個應用,一個應用只能通過80端口訪問,另一個應用只能通過8080端口訪問,這種情況下,可以分開兩個服務,然后分別創建80端口和8080端口的連接器。
2.匹配主機
一個服務下配置一個引擎,一個引擎下可以配置多個主機,通過請求路徑的域名匹配主機名稱,如果未匹到,則使用默認的主機,默認主機由引擎的屬性defaultHost配置。
3.匹配上下文(應用)
一個主機下可以配置多個上下文,通過URI匹配上下文的路徑,如果未匹配到,則匹配失敗。
4.選用版本
其實一個主機下可以配置相同路徑的上下文,但需要版本不同。匹配到上下文后,會優先選用最新版本的,版本是按字典排序后,以最后一個為最新版。
所以舊版一般是不會被用到的,當需要在不停止運行tomcat的情況下,進行新版替換舊版。 這時候,新版通過自動部署方式,加入tomcat,舊版仍然處理請求,不影響客戶端繼續操作。
如果請求所保持的Session仍存活於舊版本,則繼續使用舊版。如果請求未在舊版注冊過Session,則使用新版處理。
5.匹配Servlet
一個Servlet可以配置多個映射模式,通過上下文URI匹配映射模式,映射模式有四類,分別是完全路徑匹配,路徑匹配,擴展名匹配和默認模式。如果前三類未匹配到,則直接使用默認模式的Servlet。
在全局web配置中,就可以發現有默認配置的Servlet:
<servlet> <servlet-name>default</servlet-name> <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class> <init-param> <param-name>debug</param-name> <param-value>0</param-value> </init-param> <init-param> <param-name>listings</param-name> <param-value>false</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet>
<servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
另外,配置里面還有JSP servlet:
<servlet> <servlet-name>jsp</servlet-name> <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class> <init-param> <param-name>fork</param-name> <param-value>false</param-value> </init-param> <init-param> <param-name>xpoweredBy</param-name> <param-value>false</param-value> </init-param> <load-on-startup>3</load-on-startup> </servlet>
<servlet-mapping> <servlet-name>jsp</servlet-name> <url-pattern>*.jsp</url-pattern> <url-pattern>*.jspx</url-pattern> </servlet-mapping>
6.匹配資源
所以,不管需要獲取什么資源,必須先匹配到Servlet,然后再由Servlet返回資源。
tomcat是采用虛擬資源映射,可以由多個物理資源映射到同一個虛擬資源,由多個虛擬資源映射到同一個物理資源。