Проблема состоит в том, чтобы позволить им завершить запрос и только затем выйти из системы. Я предполагаю, что если они нажимают «Сохранить» на форме, вы хотите, чтобы данные были сохранены, но затем они должны быть перенаправлены на страницу обслуживания. Для запросов GET вы можете просто выйти из системы, если установлен флаг обслуживания. POSTs немного сложнее, потому что вы хотите выполнить запрос, а затем выйти из него и перенаправить их на страницу обслуживания. Я бы попробовал фильтр запросов. Обработайте запрос как обычно, но затем сделайте недействительным сеанс и используйте response.sendRedirect, если установлен флаг обслуживания.
Другим вариантом может быть использование таймера JavaScript в макете - периодически заходите на страницу, чтобы узнать, должны ли они выйти из системы. Это, вероятно, не позволило бы им завершить текущий запрос.