JSF Просмотр истек ошибка при использовании обратного прокси

Я пишу решение EAI (External Authentication Interface), которое предоставляет страницы входа / выхода для некоторых приложений.

В настоящее время у нас есть балансировщик нагрузки F5, который находится перед двумя обратными прокси-серверами WebSEAL 6.1, которые затем балансируют запросы между двумя приложениями, работающими на WebSphere Application Server 8.0.0.10.

Страницы входа обслуживаются из приложения JSF 2.0.6 и используют сохранение состояния клиента, чтобы у нас не было тайм-аута сеанса

На страницах также используются bean-объекты области запросов, чтобы быть как можно ближе к состоянию без состояний, так как я не могу использовать JSF 2.2, чтобы использовать настоящий флаг без состояния

Мы обнаружили проблему со следующим сценарием и пытаемся найти решение.

  1. Клиент переходит на страницу входа в своем браузере. WebSEAL отправляет их на один из серверов WebSphere
  2. Затем клиент отправляет форму, но WebSEAL отправляет новый запрос на другой сервер WebSphere.
  3. Клиент, чем сталкивается с ошибкой, но перенаправлен на пустую страницу входа

Мы используем OmniFaces FullAjaxExceptionHandler, чтобы перехватить ошибку View Expired, сгенерированную на шаге 2

Мы также можем воссоздать ошибку, заставив WebSEAL перенаправить трафик между двумя серверами WebSphere и смоделировать сценарий

Эта проблема, по-видимому, связана с тем, что состояние просмотра с одного сервера WebSphere несовместимо с другим сервером WebSphere, что имеет смысл

Для наших целей нам нужны только данные отправленной формы, чтобы войти в систему, состояние просмотра не требуется с нашей стороны.

Есть ли способ сделать состояние просмотра клиента с одного сервера совместимым или работать с другим сервером?

Любая помощь с этим вопросом будет принята с благодарностью.

1 ответ

Решение

Я не уверен, что мне разрешено отвечать на мой собственный вопрос, но я нашел решение, которое работает для нас.

Мы использовали тег enableRestorableView OmniFaces, чтобы восстановить представление, когда оно повреждено / отсутствует в этих ситуациях.

http://showcase.omnifaces.org/taghandlers/enableRestorableView

В обоих наших тестовых примерах принудительного прерывания и изменения состояния просмотра на странице тег позволяет нашему приложению продолжать использовать параметры формы

Другие вопросы по тегам