2016-10-07 68 views
2

我提出,我想在外部的Tomcat 8.自定義上下文路徑

以彈簧啓動應用程序運行一個彈簧啓動應用,可以選擇上下文路徑使用屬性server.context-pathapplication.properties但由於我使用的是外部tomcat 8,因此不使用此屬性。

因此,我看了一下,其中列明瞭tomcat-8 documentation

如果要部署一個WAR文件或使用不相關的基本文件名,然後的一個上下文路徑的目錄下列選項必須用於防止重複部署:

  • 禁用自動部署和deployOnStartup和server.xml中
  • 定義所有上下文找到主機的的appBase之外的WAR和/或目錄和使用的context.xml文件一個docBase屬性來定義它。

因爲我不想污染server.xml,我選擇了第二個選項。因此,我在/home/myuser/myapp/application-1.0.0.war找到戰爭,並且我在conf/Catalina/localhost下放置了一個上下文文件名application-1.0.0.xml。該文件只包含那些2線:

<?xml version="1.0" encoding="UTF-8"?> 
<Context path="/myapp" docBase="/home/myuser/myapp"/> 

我可以在tomcat8成功啓動日誌中看到,該應用程序出現在Tomcat管理器進行部署,但:

  • 的路徑,而不是/application-1.0.0/myapp
  • 此外,目錄application-1.0.0出現在work目錄中,但保持爲空。
  • 日誌不會顯示任何與彈簧相關的日誌,就像應用程序從未初始化過一樣。

注意:我知道這場戰爭是正確的,因爲,如果我把它放在了webapp目錄(默認上下文路徑雖然)的作品。

注意:如果我重新命名application-1.0.0.xml到,Tomcat的管理器顯示該應用程序是根據上下文路徑/foo部署(但它仍然沒有啓動)。

任何想法?

回答

2

找到了答案:

  • 關於上下文路徑,上下文文件的屬性path確實忽略:

時靜態定義一個Context該屬性必須只使用在server.xml中。在所有其他情況下,路徑將從用於.xml上下文文件或docBase的文件名推斷出來。

  • 關於docBase屬性,我誤解了下面的句子:

找到WAR和/或目錄主機的的appBase之外,並使用一個context.xml文件與文檔庫屬性來定義它。

實際上,在docBase中,我將路徑放到包含戰爭而不是戰爭路徑的目錄中。

+0

那麼什麼是正確的配置呢?而且 - 每次部署新版本時是否需要更新文件? – ACV