這篇文章將為大家詳細(xì)講解有關(guān)大數(shù)據(jù)中如何不配置應(yīng)用名訪問應(yīng)用,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。
為班戈等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及班戈網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都網(wǎng)站設(shè)計、網(wǎng)站制作、外貿(mào)營銷網(wǎng)站建設(shè)、班戈網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!
如何不使用應(yīng)用名,直接通過虛擬主機(jī)的名稱或綁定的域名來訪問應(yīng)用呢?
進(jìn)行Web開發(fā)部署的人常會有以上的疑問。在進(jìn)行Web應(yīng)用發(fā)布時,經(jīng)常需要通過以下這種形式進(jìn)行應(yīng)用的請求。
虛擬主機(jī)+端口+ 應(yīng)用名
而如果我們配置了針對應(yīng)用的特定虛擬主機(jī),一個虛擬主機(jī)上只有這一個應(yīng)用,再通過應(yīng)用名訪問就沒什么必要,同時顯的繁瑣。
那在Tomcat中,怎么樣配置,以支持通過虛擬主機(jī)(端口如果是80,也可以跳過)直接訪問應(yīng)用呢?
官方文檔中,對于Context中應(yīng)用名稱這個屬性有這樣的描述:
我們看到,如果要為虛擬主機(jī)配置默認(rèn)的應(yīng)用,我們可以給context的path配置為空。這里注意一下,為空的意思,是指空串,而不是不指定。當(dāng)然,對于應(yīng)用名稱,我們在指定時一般是 /abc這種形式,所以為空時,也可以指定成 /這樣
所以,配置成以下兩種形式,都是OK的。
當(dāng)然,除了以上這種配置外,將應(yīng)用的WAR包或者目錄命名為ROOT,也可以起到上面的作用。Tomcat在webapps目錄下自帶的ROOT應(yīng)用就是個例子。
我們來看Tomcat內(nèi)部,是如何處理的這些邏輯。
首先在Server啟動時,會涉及到應(yīng)用的部署,部署過程,可以參考前面的文章:
WEB應(yīng)用是怎樣進(jìn)行部署的
部署過程中,會根據(jù)具體的Context的配置,獲取對應(yīng)的應(yīng)用名稱,從而進(jìn)行應(yīng)用名稱的配置和注冊。
以下是部署前,解析配置的應(yīng)用名稱:
部署時,根據(jù)是在server.xml中配置部署還是在自動部署目錄中部署,處理情況不同:
在配置文件中配置的情況:
我們再看,在代表應(yīng)用名稱的類ContextName內(nèi),包含以下聲明:
public static final String ROOT_NAME= "ROOT";
同時,應(yīng)用部署,獲取具體Context名稱的時候,對應(yīng)的ContextName構(gòu)造函數(shù)里有下面的邏輯,
public ContextName(String path, String version) {
// Path should never be null, '/' or '/ROOT'
if (path == null || "/".equals(path) || "/ROOT".equals(path)) {
this.path = "";
} else {
this.path = path;
}
同時,對于
我們發(fā)現(xiàn)對于ROOT應(yīng)用,在另一個構(gòu)造函數(shù)里,直接對應(yīng)到的請求路徑為空。
if (ROOT_NAME.equals(tmp2)) {
path = "";
}
后續(xù)的Context注冊,就會用到這里的path。這里的注冊過程,可以參考前面的文章:
Tomcat多虛擬主機(jī)配置及原理
我們看到,注冊的過程中,如果有path為/的情況,也會自動轉(zhuǎn)化為空串。
沒有匹配到,就會匹配a的默認(rèn)值0,即第一個應(yīng)用。第一個應(yīng)用是什么呢?
就是我們配置的默認(rèn)應(yīng)用,path為空的那個。
例如下面是Tomcat自帶的幾個應(yīng)用的path,這是在mapper中注冊的情況。
所以,在配置到默認(rèn)的path為空的應(yīng)用后,就會用它進(jìn)行請求的后續(xù)響應(yīng)了。
關(guān)于大數(shù)據(jù)中如何不配置應(yīng)用名訪問應(yīng)用就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。