Tomcat

Tomcat 從臨時目錄而不是 webapps 目錄提供頁面

  • October 30, 2017

我在 Docker 容器中部署了一個 Apache Tomcat (Spring) 應用程序。主機是 Centos 7,容器是 Debian 9。

過去,我在 Docker 之外執行此應用程序時沒有任何問題。

我通過將所需文件複製到${CATALINA_HOME}/webapps/appname/. 應用程序載入正常,但是應用程序的副本會自動移動到${CATALINA_HOME}/temp/3-appname/.

我不認為這會是個問題,但注意到如果我在 中更改 JSP 頁面${CATALINA_HOME}/webapps/appname/,什麼也不會發生。如果我在臨時目錄中更改它,則會顯示更改。

在我的 Spring 應用程序中,呼叫會ServletContext.getRealPath("WEB-INF")導致 temp 目錄中的 WEB-INF 目錄。

我假設問題出在某個地方的一些上下文配置,但我不確定在哪裡設置它,因為我過去不必設置它。

如何阻止應用程序從臨時目錄而不是 webapps 目錄中提供服務?

事實證明這是我為修復錯誤所做的事情的副作用:

${CATLINA_HOME}/conf/server.xml在元素中antiResourceLocking="true"<Context>這會導致從 temp 目錄提供 webapp 的多個副本。

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