JSF Просмотр истек ошибка при использовании обратного прокси
Я пишу решение EAI (External Authentication Interface), которое предоставляет страницы входа / выхода для некоторых приложений.
В настоящее время у нас есть балансировщик нагрузки F5, который находится перед двумя обратными прокси-серверами WebSEAL 6.1, которые затем балансируют запросы между двумя приложениями, работающими на WebSphere Application Server 8.0.0.10.
Страницы входа обслуживаются из приложения JSF 2.0.6 и используют сохранение состояния клиента, чтобы у нас не было тайм-аута сеанса
На страницах также используются bean-объекты области запросов, чтобы быть как можно ближе к состоянию без состояний, так как я не могу использовать JSF 2.2, чтобы использовать настоящий флаг без состояния
Мы обнаружили проблему со следующим сценарием и пытаемся найти решение.
- Клиент переходит на страницу входа в своем браузере. WebSEAL отправляет их на один из серверов WebSphere
- Затем клиент отправляет форму, но WebSEAL отправляет новый запрос на другой сервер WebSphere.
- Клиент, чем сталкивается с ошибкой, но перенаправлен на пустую страницу входа
Мы используем OmniFaces FullAjaxExceptionHandler, чтобы перехватить ошибку View Expired, сгенерированную на шаге 2
Мы также можем воссоздать ошибку, заставив WebSEAL перенаправить трафик между двумя серверами WebSphere и смоделировать сценарий
Эта проблема, по-видимому, связана с тем, что состояние просмотра с одного сервера WebSphere несовместимо с другим сервером WebSphere, что имеет смысл
Для наших целей нам нужны только данные отправленной формы, чтобы войти в систему, состояние просмотра не требуется с нашей стороны.
Есть ли способ сделать состояние просмотра клиента с одного сервера совместимым или работать с другим сервером?
Любая помощь с этим вопросом будет принята с благодарностью.
1 ответ
Я не уверен, что мне разрешено отвечать на мой собственный вопрос, но я нашел решение, которое работает для нас.
Мы использовали тег enableRestorableView OmniFaces, чтобы восстановить представление, когда оно повреждено / отсутствует в этих ситуациях.
http://showcase.omnifaces.org/taghandlers/enableRestorableView
В обоих наших тестовых примерах принудительного прерывания и изменения состояния просмотра на странице тег позволяет нашему приложению продолжать использовать параметры формы