В связи с этим мне не нужно изменять код, уже написанный для создания / доступа и уничтожения сессии. Также существует отдельный сервер / служба, которая обрабатывает и хранит сеанс, поэтому не требуется мастер-кластер.

из наших веб-приложений Spring MVC развернуто на нескольких веб-серверах с tomcat 7, а LB находится впереди, чтобы сбалансировать и распределить запросы на соответствующий сервер tomcat.

Проблема с этим веб-фермерством заключается в том, что каждый сервер Tomcat может хранить и извлекать свой собственный сеанс HTTP, но LB может отправлять запросы на любой из веб-серверов. Таким образом, если пользователь обслуживается для страницы входа через tomcatServer1, то его сеанс HTTP будет создан на его уважаемом сервере, и может случиться так, что для второго запроса страницы панели мониторинга LB отправит его на tomcatServer2, где сеанс HTTP недоступен, полученный пользователь снова будет перенаправлен на страницу входа.

Чтобы преодолеть это,

мы используем свойство «Sticky Session» на LB, так что если пользователь (сессия HTTP + публичный IP-адрес пользователя) впервые обслуживается с tomcatServer1, он будет привязан к этому серверу. Установка «Sticky Session» бесполезна, так как она не использует все серверы одинаково.Другой способ - разработать собственный сервер состояний сеанса и развернуть его на сервере, после чего весь сервер должен связаться с этим сервером для хранения и извлечения объекта / данных сеанса.Предоставление пользовательскихSessionManager Сервлет Контейнер.

О # 2, если в случае, если мы сможем разработать сервер состояний, то я также должен изменить код на связанный сHttpSession.setAttribute() а такжеHttpSession.getAttribute(). Так что вопрос в том, можно ли отменить реализациюHttpSession для методов setAttribute & getAttribute? Кроме того, о № 3, я не знаю, будет ли это решение предоставлять сервер сеансов распределенного состояния?

Ответы на вопрос(1)

Ваш ответ на вопрос