2014-10-01 63 views
0

我有一個java webapp運行在IIS 8後面的Tomcat 7下(都配置爲多主機)。如何在Tomcat中取消部署java webapp但保留IIS網站配置?

要更新Web應用程序,我通常取消部署現有應用程序並部署新的WAR(在其文件夾結構中爆炸),但這會導致IIS web.config文件被擦除,從而丟失所有(IIS)網站設置。

據我所知(但我是IIS新手),在IIS中,網站物理路徑是webapp ROOT文件夾(即/path/to/tomcat/webapp/ROOT從名爲ROOT.war的WAR中展開),並且在IIS中配置錯誤頁時,創建文件ROOT/web.config

有什麼辦法可以避免丟失該配置文件?或者我應該總是重新部署新的戰爭而不首先部署Web應用程序?

如果necessay,這裏有幾個細節:

  • 我的web應用程序無關與web.config文件,它讀取和IIS只寫;
  • IIS和Tomcat與BonCode connector連接;
  • BonCode連接器爲所有站點安裝;
  • 我只運行一個Tomcat實例;
  • 我正在更改IIS配置以設置自定義錯誤頁面和SSL要求。

回答

0

當你在tomcat中部署一場戰爭時,可以說你的戰爭叫做MyWar.war,文件夾MyWar被創建並且它取代了那裏的任何東西。有時候,像你的情況一樣,這是一種很好的做法,即從戰爭之外讀取配置文件(不想覆蓋的配置文件)。如果你可以訪問你的代碼並編譯/重新部署,你將能夠做到這一點。你需要做的是重新寫代碼從你讀web.config的地方,並嘗試讀取它作爲外部文件資源(FileInputStream)而不是ResourceAsStream(這可能是你如何閱讀你的配置文件)。

這種方式每次部署時,重新部署並覆蓋ROOT文件夾並不重要,因爲配置將始終從外部讀取。

如何做到這一點的例子是在這篇文章中,我也回答了。

Loading Properties from a JAR file (java 1.6)

希望它可以幫助

+0

一個小澄:在web.config中* *是讀取和寫入文件,我的web應用程序無關,用它做的IIS。最好的辦法是把它移到其他地方,但我不知道這是否可能。 – watery 2014-10-01 16:28:23

+0

噢,好的。好吧,我想必須有一個地方可以編輯IIS配置並指定你的配置文件的位置。如果這不能完成(我不知道,因爲我以前沒有使用IIS),那麼你將不得不復制你的文件,保存在其他地方,如果你必須重新部署tomcat,部署,然後用你所替換的文件替換保存。 – 2014-10-01 16:37:28