Есть одно приложение, в котором я работаю, где все еще используются ручные сборки, т.е. вручную перемещаются классы сервлетов и файлы jsp из Dev в QA и, наконец, в Prod.
Это метод, используемый в этом приложении, который не может быть изменен по некоторым странным причинам. TWW это не проблема.
Мы сделали ручную сборку, когда недавно перенесли файлы jsp из QA в PROD.
И мы заметили, что содержимое файла jsp не соответствует обновленным файлам jsp, но имеет то же содержимое, что и файл jsp, который присутствовал на сервере до развертывания.
Мы не перезапускали tomcat, так как файлы jsp при обновлении автоматически изменяют свое содержимое.
Эта проблема сохранялась даже после 6 часов развертывания. Если учесть разные стандарты времени, это может вызвать некоторую задержку.
Поэтому, чтобы исправить это, нам пришлось индивидуально заходить в каждый файл jsp и просто вводить что-то, сохранить его, удалить это изменение и сохранить его. Тогда все заработало отлично.
Но, наконец, содержимое файла jsp до и после никогда не менялось, мы просто изменили дату изменения.
Если мы подумаем с точки зрения проблемы с отметкой времени, как это может быть возможно, потому что старые файлы jsp, которые присутствовали на сервере до развертывания, были минимум одного месяца назад, а те, которые были развернуты, были определенно новее.
Почему это случилось? Этого не произошло, когда мы ранее выполняли такой же тип развертывания.
Как мы можем предотвратить это в будущем.
Я не знаю, почему это произошло, но вы можете заставить Tomcat перекомпилировать все JSP, удалив все в work/Catalina/localhost
и перезапуск Tomcat. Частота, с которой Tomcat проверяет необходимость перекомпиляции JSP, также может быть настроен в web.xml
.