Я думаю, что это ошибка Tomcat. Я подал отчет об ошибке, но исправить это сложно.
Tomcat может развернуть приложение тремя способами,
- Каталог, например, webapps / myapp.
- WAR, как webapps / myapp.war.
- Фрагмент контекста, который вы используете.
Если вы используете № 3, но приложение или война находятся в веб-приложениях, Tomcat будет перепутан с № 1 или № 2. При повторном развертывании каталога или войны предполагается удалить фрагмент контекста.
Мои обходные пути,
- Если вы используете каталог, поместите его где-нибудь, кроме APPBASE (webapps). Если вы используете WAR, поместите его в другое место и не взрывайте его.
- Мы разворачиваем наше приложение, используя скрипт. В сценарии фрагмент копируется каждый раз после того, как приложение было развернуто.
Вот пример фрагмента для развертывания WAR,
<Context docBase="/anywhere/but/webapps/myapp.war"
swallowOutput="true" unpackWAR="false" />
Обратите внимание, что не каждое приложение работает в распакованном режиме. Вы не можете читать какие-либо ресурсы как файлы из WAR в распакованном режиме.