Я хочу использовать HttpSession на основе cookie в контейнере serlvet. Все данные сеанса должны храниться внутри файла cookie. В сервлет-приложениях это редко встречается. В Rails (сеанс) и Playframework (сеанс) этот вид обработки сеанса является значением по умолчанию. Почему это так необычно?
В бетоне мне нужно решение для JBoss EAP6 (без фасов с сессией). Я нашел две реализации, основанные на фильтрах serlvet:
Знаете ли вы какие-либо альтернативы?
(Если возможно, я не хочу обсуждать плюсы и минусы вообще)
В Java EE редко встречаются данные сеанса в cookie... потому что HttpSession
реализуется во всех контейнерах сервлетов.
В постоянных сеансах cookie у вас есть ограничение по размеру, и вы должны использовать подписанные данные, чтобы избежать манипуляции с клиентской стороной сеанса. Вы должны шифровать данные, если хотите сохранить конфиденциальную информацию в сеансе. И все данные сеанса обмениваются с каждым запросом и ответом. Эти ограничения уходят с HttpSession
.
Наибольший интерес для постоянных сеансов cookie заключается в том, что у вас может быть ферма из нескольких серверов, которая может отвечать на любой запрос, потому что сеанс содержится в запросе. Но это можно сделать в Java EE, используя липкие сессии на обратном прокси-уровне (потому что у вас есть обратные прокси почти в каждом серьезном центре обработки данных): обратные прокси знают о сеансе и передают запрос серверу, который его поддерживает.
Некоторые серверы Java EE имеют представление об общих сеансах.
ИМХО, это не то, что было бы очень сложно реализовать постоянный сеанс cookie на Java, это просто для профессиональных обычаев, он не был признан достаточно важным.