Eclipse RAP - Firefox не забывает сессию - PullRequest
0 голосов
/ 30 июля 2009

У нас есть приложение Eclipse RAP, которое немного странно себя ведет в Firefox - две разные проблемы.

Когда вы просматриваете, вы можете нажать на кнопку в одной части системы. Откроется всплывающее окно, например:

IWorkbenchBrowserSupport bs;
bs = PlatformUI.getWorkbench().getBrowserSupport();
int style = IWorkbenchBrowserSupport.AS_EXTERNAL;
IWebBrowser b = bs.createBrowser(style, getRandomID(), "Hello world", "");
b.openURL(new URL(...));

где URL - это другой сервлет в приложении. Этот сервлет находится в той же среде выполнения, но не имеет ничего общего с RAP - он берет двоичный двоичный объект из хранилища в памяти и выгружает его в выходной поток.

Проблема 1: Это приводит к прекращению сеанса HTTP в firefox и отображает страницу ошибки RAP "сеанс истек" со ссылкой для перезапуска сеанса.

Проблема 2: Теперь, когда вы нажимаете на ссылку, чтобы перезапустить сеанс, он снова показывает диалоговое окно приложения, но ошибка истечения сеанса снова отображается, как только вы что-то делаете. Это не позволяет пользователю снова использовать систему, если Firefox полностью не закрыт и не перезапущен. Быстрый просмотр FireBug показывает, что JSESSIONID, переданный Firefox, не изменяется.

Кто-нибудь видел это раньше?

Ответы [ 3 ]

0 голосов
/ 09 апреля 2010

Оказывается, что если приложение RAP открывает всплывающее окно, указывающее на сервлет в самом приложении, в текущем контексте сервлета HTTP, сеанс прерывается. Исправлено путем создания фиктивного HTTP-контекста для рассматриваемого сервлета.

0 голосов
/ 05 мая 2010

Если вам нужно доставить контент из одного и того же приложения, вы должны использовать вместо этого обработчик службы. Смотрите этот FAQ: http://wiki.eclipse.org/RAP/FAQ#How_to_provide_download_link.3F

0 голосов
/ 03 августа 2009

Сколько длится сброс потока на выход? Может ли это вызвать тайм-аут? Поскольку RAP использует вызовы Javascript, он может быть намного короче обычного времени ожидания.

Для задачи 2: Firefox кеширует много вещей; и если выполнение Javascript зависнет, это может вызвать такие проблемы.

Есть ли эти проблемы в других браузерах? Рекомендуется проверить с помощью внутреннего браузера (или любого другого браузера с другим механизмом рендеринга).

...