Как незаметно передеплоить сервер?
Недавно занимался похожей проблемой. Пока для себя нашёл простое решение - Parallel deployment.
Суть в том, что в Tomcat'е одновременно можно задеплоить несколько версий одного и того же приложения. Новые пользователи будут работать с новой версией, старые - со старой. Старые пользователи потихоньку отваливаются и когда они отвалятся все, то старая версия приложения удаляется.
Для реализации этого у себя в название war файла добавил номер сборки и теперь оно выглядит примерно так: App##015.war. Кидаем war-файл в webapps и через пару секунд у нас задеплоина новая версия. Очень удобно.
При желании старые сессии можно почистить принудительно и тогда старая версия сразу удалиться. Это на случай, если произошли серьёзные изменения (например, схема базы сильно поменялась).
Имейте в ротации несколько серверов, выводите из ротации при деплое (не особо важно, по IP ротация или все за одним прокси), это даст вам еще и стабильный аптайм. Сервак может и сам по себе упасть, не в идеальном мире живем.