繁体   English   中英

Eclipse RAP-Firefox不会忘记会话

[英]Eclipse RAP - Firefox doesn't forget session

我们有一个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不变。

谁看过这个吗?

流到输出的转储需要多长时间? 会导致超时吗? 由于RAP使用Javascript调用,因此它可能比正常的超时时间短得多。

对于问题2:Firefox缓存了很多东西; 并且如果Java语言执行挂起,则可能会导致此类问题。

这些问题在其他浏览器中存在吗? 使用内部浏览器(或具有不同渲染引擎的任何其他浏览器)进行检查可能是一个好主意。

事实证明,如果RAP应用程序在当前HTTP Servlet上下文内打开指向应用程序自身中Servlet的弹出窗口,则会话将被杀死。 通过为有问题的servlet创建伪HTTP上下文来解决。

如果需要从同一应用程序中交付内容,则应改用服务处理程序。 请参阅以下常见问题解答: http : //wiki.eclipse.org/RAP/FAQ#How_to_provide_download_link.3F

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM