Переадресация при ошибке получения сессии

Привет.

В приложении при возникновении ошибки NoUserSessionException, предусмотрен NoUserSessionHandler, который переадресовывает пользователя на экран логина.

image

Однако было замечено, что если у приложения две url записи, одна внешняя для пользовательского пользования, например cuba-app.company.ru - внешняя, а само приложение крутится в опеншифте и у него есть внутренний url, что-то вроде cuba-app.apps.oshift.company.local/app.

Так вот при вызове ?restartApp на внешней ссылке cuba-app.company.ru/?restartApp, приложение переадресовывает не на внешнюю же ссылку логина, а на внутреннюю cuba-app.apps.oshift.company.local/app

Почему так происходит и как это исправить?

Причем замечено, что при истечении сессии переход на экран логина происходит корректно.
image
Возможно ли применить логику истечения сессии к NoUserSessionHandler?

Был бы рад услышать некое пояснение или если есть, то ссылку по принципу работы
?restartApp

Параметр restartApp обрабатывается в CubaApplicationServlet.java.

Спасибо. @krivopustov
Кстати выяснил, что при моих настройках проксирования, когда путь app скрыт за nginx, происходит переадресация на внутренний адрес при использовании любых urlPath, вроде open, ?restartApp и других, настроенных дополнительно с помощью HandlerProcessor.

Константин, два вопроса.

  1. А почему при любом переходе по ?restart или настройке open|o происходит
    responce.sendRedirect()
    А при
    image
    перехода по responce.sendRedirect() не происходит?
    Хотя вроде как по коду там должна быть аналогичная логика с ?restart

  2. Есть какой-то гайд по расширению CubaApplicationServlet.java? Хочу добавить логирование, чтобы понять где у меня некорректные настройки указаны.

На первый вопрос не смогу ответить.

По второму вопросу: класс сервлета явно прописан в файле modules/web/web/WEB-INF/web.xml вашего проекта, так что вы можете легко подменить его своей реализацией.

1 симпатия