2016-02-16 12 views
0

Я пишу растворный EAI (External Authentication Interface), который обеспечивает Войти/Выйти страницы для некоторых приложенийJSF вид истек ошибку при использовании обратного прокси-сервера

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

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

Страницы также используют брандмауны с запросами как можно ближе к апатриду, насколько это возможно, поскольку я не могу использовать JSF 2.2 для использования реального флага без состояния

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

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

Мы используем OmniFaces FullAjaxExceptionHandler поймать Истекло ошибку Просмотр, генерируемый на шаге 2

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

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

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

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

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

+0

_ "Этот вопрос, как представляется, потому что состояние представления с одного сервера WebSphere несовместимо с другим сервером WebSphere, что имеет смысл «почему это имеет смысл? В состоянии сохранения на стороне сервера и без использования кластеризации это происходит, но почему здесь? – Kukeltje

+0

@Kukeltje Извиняюсь, что это имело смысл для меня, я предположил, что состояние представления даже при использовании сохранения состояния клиента будет специфичным для одного сервера WebSphere, а не общего для любого сервера WebSphere. –

+0

Возможно, вам нужно настроить явный ключ шифрования для экономии состояния на стороне клиента (или у вас есть это уже?) – Kukeltje

ответ

1

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

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

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

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