溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

大數(shù)據(jù)中如何不配置應用名訪問應用

發(fā)布時間:2021-12-21 11:51:25 來源:億速云 閱讀:108 作者:柒染 欄目:大數(shù)據(jù)

這篇文章將為大家詳細講解有關大數(shù)據(jù)中如何不配置應用名訪問應用,文章內(nèi)容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

如何不使用應用名,直接通過虛擬主機的名稱或綁定的域名來訪問應用呢

進行Web開發(fā)部署的人常會有以上的疑問。在進行Web應用發(fā)布時,經(jīng)常需要通過以下這種形式進行應用的請求。

虛擬主機 +端口 + 應用名

而如果我們配置了針對應用的特定虛擬主機,一個虛擬主機上只有這一個應用,再通過應用名訪問就沒什么必要,同時顯的繁瑣。

那在Tomcat中,怎么樣配置,以支持通過虛擬主機(端口如果是80,也可以跳過)直接訪問應用呢?

官方文檔中,對于Context中應用名稱這個屬性有這樣的描述:

大數(shù)據(jù)中如何不配置應用名訪問應用

我們看到,如果要為虛擬主機配置默認的應用,我們可以給context的path配置為空。這里注意一下,為空的意思,是指空串,而不是不指定。當然,對于應用名稱,我們在指定時一般是 /abc 這種形式,所以為空時,也可以指定成 / 這樣

所以,配置成以下兩種形式,都是OK的。

  • <Context path=""  docBase="/home/abc/xxx"/>


  • <Context path="/"  docBase="/home/abc/xxx"/>

當然,除了以上這種配置外,將應用的WAR包或者目錄命名為ROOT,也可以起到上面的作用。Tomcat在webapps目錄下自帶的ROOT應用就是個例子。

我們來看Tomcat內(nèi)部,是如何處理的這些邏輯。

首先在Server啟動時,會涉及到應用的部署,部署過程,可以參考前面的文章:

WEB應用是怎樣進行部署的

部署過程中,會根據(jù)具體的Context的配置,獲取對應的應用名稱,從而進行應用名稱的配置和注冊。

以下是部署前,解析配置的應用名稱:

大數(shù)據(jù)中如何不配置應用名訪問應用

部署時,根據(jù)是在server.xml中配置部署還是在自動部署目錄中部署,處理情況不同:

在配置文件中配置的情況:

大數(shù)據(jù)中如何不配置應用名訪問應用

我們再看,在代表應用名稱的類ContextName內(nèi),包含以下聲明:

public static final String ROOT_NAME = "ROOT";

同時,應用部署,獲取具體Context名稱的時候,對應的ContextName構造函數(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應用,在另一個構造函數(shù)里,直接對應到的請求路徑為空。

    if (ROOT_NAME.equals(tmp2)) {

            path = "";

     }

后續(xù)的Context注冊,就會用到這里的path。這里的注冊過程,可以參考前面的文章:

Tomcat多虛擬主機配置及原理

我們看到,注冊的過程中,如果有path為/的情況,也會自動轉化為空串。

大數(shù)據(jù)中如何不配置應用名訪問應用

沒有匹配到,就會匹配a的默認值0,即第一個應用。第一個應用是什么呢?

就是我們配置的默認應用,path為空的那個。

例如下面是Tomcat自帶的幾個應用的path,這是在mapper中注冊的情況。

所以,在配置到默認的path為空的應用后,就會用它進行請求的后續(xù)響應了。

關于大數(shù)據(jù)中如何不配置應用名訪問應用就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI