我剛花了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 2,tcserver和tomcat的關係:
tcserver不同於普通的tomcat,他的%catalina_home%/conf/catalina/localhost根本沒有,其實是這樣的,他很精妙的吧部署目錄指向了
%tcserver_home%\spring-insight-instance,為什麼這麼說呢?
在%tcserver_home%\tcruntime-ctl.bat中
也就是說instance_base設為了當前目錄,也就是%tcserver_home%
素所以我們可以看到,catalina_base和catalina_home都被設定為了%tcserver_home%/%1,而這個%1是第乙個引數spring-insight-instance,所以catalina_base和catalina_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...