Я прошу прощения за враждебную тему.
Я начал работать в новой компании на прошлой неделе, и меня сразу же бросили в логово льва. У нас было приложение на грани запуска в производство ... Один из моих парней запустил приложение и проверил его, поэтому я не стал слишком углубляться в детали того, что он делал.
У нас было это:
../legacy/ROOT/
..............index.jsp
..............WEB-INF/
.....................lib/
.........................(libs)
.....................classes/
............................x.class
В conf / server.xml есть виртуальный хост, который определил корень как ROOT.
Новое приложение, похоже, запустилось как копирование / вставка устаревшего приложения. У него нет записи в server.xml. Так сказать, в старых приложениях, даже если оно полностью разделено. Новое приложение укоренено в legacy / ROOT / NewApp:
../legacy/ROOT/
..............index.jsp
..............WEB-INF/
.....................lib/
........................(libs)
.....................classes/
............................x.class
..............NewApp/
....................index.jsp
....................WEB-INF/
...........................lib/
..............................(libs)
...........................classes/
..................................x.class
Чтобы перейти к устаревшему приложению, перейдите к http://theUrl. Чтобы перейти к NewApp, перейдите к http://theUrl/NewApp. Все это прекрасно работает. Может быть.
Мы установили новое приложение в субботу вечером. Утром в понедельник мы обнаруживаем, что хотя NewApp отлично работает, наши пользователи не могут войти на устаревший сайт. Они получают сгенерированную приложением ошибку «неверное имя пользователя».
Мне приходит в голову, я не знаю, почему NewApp работает вообще. Я не менял web.xml. Итак, я предполагаю, что Tomcat находит URL-адрес, который ему нравится, просматривая определения HOST, затем видит / NewApp в URL-адресе и с радостью переходит в старый подкаталог / ROOT / NewApp, где находит index.jsp, и мы к гонкам.
Теперь я очень запутался. Унаследованный код имеет папку WEB-INF, и также существует NewApp / WEB-INF. Я не знаю, почему Tomcat что-то делает с NewApp / WEB-INF. Тем не менее, это потому, что NewApp прекрасно работает. Что еще хуже, файлы libs и и class в обоих приложениях практически идентичны по имени и содержанию. Файл x.class в NewApp немного отличается от старого: в NewApp появился новый метод входа в систему. Однако в xAclass в NewApp все еще используется старый метод входа, хотя в NewApp его никто не использует.
Я пытаюсь определить, как сбой наследства связан с нашим развертыванием. Должно быть - но трудно понять как. Мы проверили даты файла. Ничто в наследство не изменилось. Я думаю, это как-то связано с классовой дорожкой.
Итак, у меня есть одно приложение или два? Я думал, что это последнее. Но я не так уверен. Я так растерялся, что даже не могу задать хороший вопрос: - /
Единственная другая странность заключалась в том, что Tomcat не взорвал файл WAR, хотя конфигурация выглядела так, как должна. Мы должны были сделать это вручную - и это сработало.
Вот что происходит, когда ваш ведущий разработчик говорит «3 месяца», а руководство говорит: «Нет, 1 месяц». Это кредит, он работает вообще.