Tomcat 部署專案細節深入研究

2021-09-21 19:31:35 字數 2995 閱讀 3614

我剛花了2個多小時反編譯看了下**,應該是這樣的過程,好精妙的

part 1

在應用的

meta-inf/context.xml下面配置資料來源的必要性

實際就是做了以下結果事情->多種部署tomcat應用的方式

(1)部署 %catalina_home%/conf/catalina/localhost目錄下面的 .xml

deploydescriptors(configbase, configbase.list());

(2)目錄下以.war結尾的檔案

(3)目錄下的目錄,也就是沒有打包的那些應用

而我們的問題就在第二種和第三種部署方式裡面,

deploywars(部署所有的war)裡面是乙個for迴圈,來依次呼叫deploywar(部署單個war)

而deploywar中 ,貼上**

不難發現,他會開啟乙個位元組流從war檔案中讀取meta-inf/context.xml檔案,然後把它copy

%catalina_home%/conf/catalina/localhost/下於war應用名稱相對應的xml檔案中,也就是這裡的

也就是%catalina_home%/conf/catalina/localhost

所以,這個目錄,還是必要的。

part 2tcservertomcat的關係:

tcserver不同於普通的tomcat,他的%catalina_home%/conf/catalina/localhost根本沒有,其實是這樣的,他很精妙的吧部署目錄指向了

%tcserver_home%\spring-insight-instance,為什麼這麼說呢?

%tcserver_home%\tcruntime-ctl.bat

也就是說instance_base設為了當前目錄,也就是%tcserver_home%

素所以我們可以看到,catalina_basecatalina_home都被設定為了%tcserver_home%/%1,而這個%1是第乙個引數spring-insight-instance,所以catalina_basecatalina_home都被設定為%tcserver_home%/spring-insight-instance

下面就迎刃而解了。

part 3:驗證結論

我們在%tcserver_home% \spring-insight-instance\conf\catalina\localhost下果然找到了estore.xml,符合<專案名>.xml的風格

開啟看下,發現裡面的內容正是從meta-inf/context.xml中複製來的,並且用docbase指向了**。於是part 1的論點得到證明。對比下面兩張圖

estore.xml

meta-inf/context.xml

然後tcserver就可依據estore.xml來部署estore應用

tomcat部署專案

二 不帶專案名訪問 第一種 解壓的資料夾重新命名root 注意大小寫 或則重新命名war包為root.war 第二種 在server.xml 進行配置host 在host檔案中,配置127.0.0.1 www.api.com,context 中path代表web專案的訪問路徑,host的name就是...

tomcat部署專案

1 乙個tomcat部署多個網域名稱專案 修改tomcat裡面的service.xml檔案 name server.zhoubang85.com unpackwars true autodeploy true documentation at docs config valve.html class...

Tomcat部署專案

第一種方法 在tomcat中的conf目錄中,在server.xml中的,節點中新增 d test webroot debug 0 privileged true 至於context 節點屬性,可詳細見相關文件。第三種方法 很靈活,在conf目錄中,在 catalina 注意大小寫 localhos...