我们有一个 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 是应用程序中的另一个 servlet。此 servlet 处于同一运行时,但与 RAP 无关 - 它从内存存储中获取二进制 blob 并将其转储到输出流中。
问题 1:这会导致 HTTP 会话在 firefox 中终止,并显示“会话已过期”RAP 错误页面以及重新启动会话的链接。
问题2:现在,当您单击链接以重新启动会话时,它会再次显示应用程序的对话框,但是当您执行任何操作时会再次显示会话过期错误。这可以防止用户再次使用系统,除非 Firefox 完全关闭并重新启动。快速浏览一下 FireBug 会发现 Firefox 传递的 JSESSIONID 没有改变。
有没有人见过这个?