Tomcat

Tomcat 部署覆蓋 context.xml

  • March 19, 2013

一般來說,我對Tomcat很陌生,所以如果有什麼問題請指出。

我的問題是關於使用 Tomcat 管理器更新已部署的應用程序。但首先是第一件事。我使用 META-INF/Context.xml 來儲存數據庫連接的連接資訊,因此這對於應用程序部署到的每台伺服器都是唯一的。我不確定這是否是最佳的,但這是我知道的唯一方法。

因此,在更新應用程序時,不要修改此文件很重要,因為我不想每次更新應用程序時都必須重新進行所有更改。

對於更新,我使用的是 Tomcat 管理器,我嘗試了不同的方法,但一切似乎都建立在取消部署的過程上,然後部署新版本。這樣, Context.xml 被一個空的 Context.xml 文件刪除/替換。

所以我的問題基本上是,如何更新正在執行的 web 應用程序,同時保持 Context.xml 保持不變?

順便說一句,我正在執行 Tomcat 6.0.24。

我目前正在使用的設置有多個執行同一個 webapp 的上下文,並且每個上下文都有不同的數據庫設置(類似於您的設置,除了每個上下文都在不同的伺服器上執行)。

除了在 META-INF 中包含 context.xml 文件,您還可以專門為每個伺服器上的每個實例創建一個 context.xml 並將其放在 $ TOMCAT_ROOT $ /conf/卡特琳娜/本地主機。當 Tomcat 啟動上下文時,Catalina/localhost/context.xml 中的任何設置都將覆蓋您的 Web 應用程序中的設置(通過您的 WEB-INF/web.xml 文件或 META-INF/context.xml 文件)。

我們遇到了一些小問題,但是 Catalina/localhost/context.xml 中定義的參數沒有正確覆蓋 Web 應用程序中定義的參數,但是通過將 override 屬性添加到 Parameter 節點可以輕鬆解決,如下所示:

<Parameter name="foo" value="bar" override="1"/>

tomcat 上下文的文件對此進行了更詳細的描述。

引用自:https://serverfault.com/questions/126420