У меня есть приложение Apache Tomcat (Spring), развернутое внутри контейнера Docker. Хост - Centos 7, контейнер - Debian 9.
Раньше я без проблем запускал это приложение вне Docker.
Я разворачиваю приложение, как всегда, копируя необходимые файлы в ${CATALINA_HOME}/webapps/appname/
. Приложение загружается нормально, однако копия приложения автоматически перемещается в ${CATALINA_HOME}/temp/3-appname/
.
Я не думал, что это будет проблемой, но заметил, что если я изменю страницу JSP в ${CATALINA_HOME}/webapps/appname/
, Ничего не произошло. Если я изменю его во временном каталоге, изменение отобразится.
В моем приложении Spring вызов ServletContext.getRealPath("WEB-INF")
приводит к каталогу WEB-INF во временном каталоге.
Я предполагаю, что проблема связана с какой-то конфигурацией контекста, но я не уверен, где ее установить, поскольку мне не приходилось устанавливать это в прошлом.
Как я могу предотвратить обслуживание приложения из каталога temp, а не из каталога webapps?
Оказывается, это был побочный эффект того, что я сделал, чтобы исправить ошибку:
${CATLINA_HOME}/conf/server.xml
было antiResourceLocking="true"
в <Context>
элемент. В результате из временного каталога обслуживается несколько копий веб-приложения.