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